spark local模式搭建運行示例

Apache Spark 是一個強大的分布式計算框架,但在本地模式下,它也可以作為一個單機程序運行,非常適合開發和測試階段。以下是一個簡單的示例,展示如何在本地模式下搭建和運行 Spark 程序。

一、環境準備

  1. 安裝 Java
    Spark 需要 Java 環境,確保你的系統中安裝了 Java 8 或更高版本。可以通過以下命令檢查 Java 版本:

    java -version
    

    如果未安裝 Java,可以從 Oracle 官網下載并安裝。

  2. 下載并解壓 Spark
    從 Apache Spark 官方網站下載最新版本的 Spark。選擇預編譯的二進制包(如 spark-3.4.0-bin-hadoop3.2.tgz)。
    下載完成后,解壓到一個目錄,例如:

    tar -xzf spark-3.4.0-bin-hadoop3.2.tgz -C /opt/
    cd /opt/spark-3.4.0-bin-hadoop3.2
    
  3. 配置環境變量(可選)
    為了方便使用,可以將 Spark 的 bin 目錄添加到系統的環境變量中。編輯 ~/.bashrc~/.zshrc 文件,添加以下內容:

    export SPARK_HOME=/opt/spark-3.4.0-bin-hadoop3.2
    export PATH=$SPARK_HOME/bin:$PATH
    

    然后運行以下命令使配置生效:

    source ~/.bashrc
    

二、運行 Spark Shell

Spark Shell 是一個交互式的 Scala 命令行工具,可以用來快速測試 Spark 代碼。在本地模式下運行 Spark Shell 的命令如下:

spark-shell --master local[*]
  • --master local[*] 表示在本地模式下運行,[*] 表示使用所有可用的 CPU 核心。

運行后,你會看到類似以下的輸出,表示 Spark Shell 已經啟動:

Welcome to____              __/ __/__  ___ _____/ /___\ \/ _ \/ _ `/ __/  '_//__ / .__/\_,_/_/ /_/\_\   version 3.4.0/_/Using Scala version 2.12.10, OpenJDK 64-Bit Server VM, 1.8.0_282
Type in expressions to have them evaluated.
Type :help for more information.scala>

三、運行一個簡單的 Spark 示例

在 Spark Shell 中,你可以直接編寫和運行 Spark 程序。以下是一個簡單的示例,用于計算一個文本文件中單詞的出現次數。

  1. 準備數據文件
    創建一個簡單的文本文件 example.txt,內容如下:

    Hello Spark
    Hello World
    Spark is great
    
  2. 編寫 Spark 程序
    在 Spark Shell 中,運行以下代碼:

    // 讀取文本文件
    val textFile = spark.read.textFile("example.txt")// 計算單詞出現次數
    val wordCounts = textFile.flatMap(line => line.split(" ")) // 按空格分割單詞.map(word => (word, 1)) // 將每個單詞映射為 (單詞, 1).reduceByKey(_ + _) // 按鍵(單詞)歸并值(計數)// 輸出結果
    wordCounts.collect().foreach(println)
    
  3. 查看結果
    運行上述代碼后,你會看到類似以下的輸出:

    (Hello,2)
    (World,1)
    (Spark,2)
    (is,1)
    (great,1)
    

四、運行一個完整的 Spark 應用程序

除了在 Spark Shell 中運行代碼,你還可以編寫一個完整的 Spark 應用程序并運行它。以下是一個用 Scala 編寫的簡單示例。

  1. 創建項目目錄
    創建一個項目目錄,例如 my-spark-app,并在其中創建一個 src 文件夾:

    mkdir my-spark-app
    cd my-spark-app
    mkdir src
    
  2. 編寫 Spark 應用程序代碼
    src 文件夾中創建一個文件 WordCount.scala,內容如下:

    import org.apache.spark.sql.SparkSessionobject WordCount {def main(args: Array[String]): Unit = {// 創建 SparkSessionval spark = SparkSession.builder.appName("WordCount").master("local[*]").getOrCreate()// 讀取文本文件val textFile = spark.read.textFile("example.txt")// 計算單詞出現次數val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)// 輸出結果wordCounts.collect().foreach(println)// 停止 SparkSessionspark.stop()}
    }
    
  3. 編譯和打包
    使用 sbt(Scala 構建工具)來編譯和打包項目。首先,創建一個 build.sbt 文件,內容如下:

    name := "MySparkApp"version := "0.1"scalaVersion := "2.12.10"libraryDependencies += "org.apache.spark" %% "spark-sql" % "3.4.0"
    

    然后運行以下命令編譯和打包:

    sbt package
    
  4. 運行應用程序
    使用 spark-submit 命令運行打包后的應用程序:

    spark-submit --class WordCount --master local[*] target/scala-2.12/mysparkapp_2.12-0.1.jar
    

運行后,你會看到類似之前在 Spark Shell 中的輸出結果。

總結

通過上述步驟,你可以在本地模式下搭建和運行 Spark 程序。本地模式非常適合開發和測試階段,因為它不需要復雜的集群配置。你可以使用 Spark Shell 快速測試代碼,也可以編寫完整的 Spark 應用程序并使用 spark-submit 運行。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902751.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902751.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902751.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【人工智能】解鎖 AI 潛能:DeepSeek 大模型遷移學習與特定領域微調的實踐

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 隨著大型語言模型(LLMs)的快速發展,遷移學習與特定領域微調成為提升模型性能的關鍵技術。本文深入探討了 DeepSeek 大模型在遷移學習中的…

視頻智能分析平臺EasyCVR無線監控:全流程安裝指南與功能應用解析

在當今數字化安防時代,無線監控系統的安裝與調試對于保障各類場所的安全至關重要。本文將結合EasyCVR視頻監控的強大功能,為您詳細闡述監控系統安裝過程中的關鍵步驟和注意事項,幫助您打造一個高效、可靠的監控解決方案。 一、調試物資準備與…

【k8s系列7-更新中】kubeadm搭建Kubernetes高可用集群-三主兩從

主機準備 結合前面的章節,這里需要5臺機器,可以先創建一臺虛擬機作為基礎虛擬機。優先把5臺機器的公共部分優先在一臺機器上配置好 1、配置好靜態IP地址 2、主機名宇IP地址解析 [root@localhost ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost…

【Java后端】MyBatis 與 MyBatis-Plus 如何防止 SQL 注入?從原理到實戰

在日常開發中,SQL 注入是一種常見但危害巨大的安全漏洞。如果你正在使用 MyBatis 或 MyBatis-Plus 進行數據庫操作,這篇文章將帶你系統了解:這兩個框架是如何防止 SQL 注入的,我們又該如何寫出安全的代碼。 什么是 SQL 注入&#…

數據分析案例:醫療健康數據分析

目錄 數據分析案例:醫療健康數據分析1. 項目背景2. 數據加載與預處理2.1 加載數據2.2 數據清洗3. 探索性數據分析(EDA)3.1 再入院率概覽3.2 按年齡分組的再入院率3.3 住院時長與再入院4. 特征工程與可視化5. 模型構建與評估5.1 數據劃分5.2 訓練邏輯回歸5.3 模型評估6. 業務…

3臺CentOS虛擬機部署 StarRocks 1 FE+ 3 BE集群

背景:公司最近業務數據量上去了,需要做一個漏斗分析功能,實時性要求較高,mysql已經已經不在適用,做了個大數據技術棧選型調研后,決定使用StarRocks StarRocks官網:StarRocks | A High-Performa…

軟件設計師/系統架構師---計算機網絡

概要 什么是計算機網絡? 計算機網絡是指將多臺計算機和其他設備通過通信線路互聯,以便共享資源和信息的系統。計算機網絡可以有不同的規模,從家庭網絡到全球互聯網。它們可以通過有線(如以太網)或無線(如W…

1.5軟考系統架構設計師:架構師的角色與能力要求 - 超簡記憶要點、知識體系全解、考點深度解析、真題訓練附答案及解析

超簡記憶要點 角色職責 需求規劃→架構設計→質量保障 能力要求 技術(架構模式/性能優化) 業務(模型抽象→技術方案) 管理(團隊協作/風險控制) 知識體系 基礎:CAP/設計模式/網絡協議案例&am…

基于STM32的汽車主門電動窗開關系統設計方案

芯片和功能模塊選型 主控芯片 STM32F103C8T6:基于 ARM Cortex - M3 內核,有豐富的 GPIO 接口用于連接各類外設,具備 ADC 模塊可用于電流檢測,還有 CAN 控制器方便實現 CAN 總線通信。它資源豐富、成本低,適合學生進行 DIY 項目開發。按鍵模塊 輕觸按鍵:用于控制車窗的自…

第十三屆藍橋杯 2022 C/C++組 修剪灌木

目錄 題目: 題目描述: 題目鏈接: 思路: 核心思路: 思路詳解: 代碼: 代碼詳解: 題目: 題目描述: 題目鏈接: P8781 [藍橋杯 2022 省 B] 修…

6.學習筆記-SpringMVC-攔截器(P71-P74)

1.攔截器簡介 攔截器的底層思想是AOP思想 2.攔截器入門案例 (一)制作攔截器的功能類 一般情況下,攔截器都是給表現層用的,所以創建在controller下。 (二)配置攔截器的執行位置 在projectinterceptor.…

GAIA-2:用于自動駕駛的可控多視圖生成世界模型

25年3月來自英國創業公司 Wayze 的論文“GAIA-2: A Controllable Multi-View Generative World Model for Autonomous Driving”。(注:23年9月其發布GAIA-1) 生成模型為模擬復雜環境提供一種可擴展且靈活的范例,但目前的方法不足…

《算法筆記》10.4小節——圖算法專題->最短路徑 問題 D: 最短路徑

題目描述 有n個城市m條道路&#xff08;n<1000, m<10000)&#xff0c;每條道路有個長度&#xff0c;請找到從起點s到終點t的最短距離和經過的城市名。 輸入 輸入包含多組測試數據。 每組第一行輸入四個數&#xff0c;分別為n&#xff0c;m&#xff0c;s&#xff0c;t…

深度解析 Kubernetes 配置管理:如何安全使用 ConfigMap 和 Secret

目錄 深度解析 Kubernetes 配置管理&#xff1a;如何安全使用 ConfigMap 和 Secret一、目錄結構二、ConfigMap 和 Secret 的創建1. 創建 ConfigMapconfig/app-config.yaml&#xff1a;config/db-config.yaml&#xff1a; 2. 創建 Secretsecrets/db-credentials.yaml&#xff1a…

數據庫之mysql優化

1.引擎&#xff1a; 1.1查看引擎&#xff1a; mysql> show engines; mysql> SHOW VARIABLES LIKE %storage_engine%; mysql> show create table t1; ---查看建表信息1.2 臨時指定引擎&#xff1a; mysql> create table innodb1(id int)engineinnodb; 1.3修改…

【Yii2】Yii2框架的一次BUG排查

因為項目需要&#xff0c;最近學習了使用Yii2框架的使用。但畢竟剛上手&#xff0c;好多地方都不清楚。所以就有了這個博客。 1、需求 有這么一個需求&#xff1a; 后臺需要訪問用戶的一個界面。為了界面不出問題&#xff0c;需要傳遞一個真實存在的Token。但對這個Token沒有…

卡爾曼濾波解釋及示例

卡爾曼濾波的本質是用數學方法平衡預測與觀測的可信度 &#xff0c;通過不斷迭代逼近真實狀態。其高效性和魯棒性&#xff0c;通常在導航定位中&#xff0c;需要融合GPS、加速度計、陀螺儀、激光雷達或攝像頭數據&#xff0c;來提高位置精度。簡單講&#xff0c;卡爾曼濾波就是…

Python 學習路線與筆記跳轉(持續更新筆記鏈接)

這里寫目錄標題 Python 學習路線與筆記Python 簡介學習路線第一階段&#xff1a;Python 基礎第二階段&#xff1a;Python 進階第三階段&#xff1a;實用庫與框架第四階段&#xff1a;DevOps 與 Python第五階段&#xff1a;最佳實踐與高級技巧 學習資源官方資源在線學習平臺書籍…

決策衛生問題:考公考編考研能補救高考選取職業的錯誤嗎

對于決策者來說&#xff0c;“認識你自己”是一個永恒的主題&#xff1b;警惕認知中的缺陷&#xff0c;比什么都重要。在判斷與決策問題上&#xff0c;管理者和專業人士往往都非常自信。人類遠遠不如我們想象的那么理性&#xff0c;人類的判斷也遠遠不如我們想象的那么完美。在…

React19源碼閱讀之commitRoot

commitRoot入口 在finishConcurrentRender函數&#xff0c;commitRootWhenReady函數&#xff0c;commitRoot函數。 commitRoot流程圖 commitRoot函數 commitRoot 函數是 React 渲染流程中用于提交根節點的關鍵函數。它的主要作用是設置相關的優先級和狀態&#xff0c;然后調…