wordcount程序

### 在 IntelliJ IDEA 中編寫和運行 Spark WordCount 程序

要使用 IntelliJ IDEA 編寫并運行 Spark 的 WordCount 程序,需按照以下流程逐步完成環境配置、代碼編寫以及任務提交。

---

#### 1. **安裝與配置 IntelliJ IDEA**
確保已正確安裝 IntelliJ IDEA,并啟用 Scala 插件以支持 Spark 開發。
- 如果尚未安裝,請參照官方文檔或社區指南完成安裝過程。
- 啟動 IDEA 后,在設置界面中確認 Scala 插件處于激活狀態。

---

#### 2. **創建 Maven 項目**
新建一個 Maven 項目用于管理依賴庫。
- 打開 IDEA,選擇 `File -> New Project`,接著選中 `Maven` 模板。
- 輸入項目的 GroupId 和 ArtifactId(如:GroupId=`com.example`, ArtifactId=`spark-wordcount`),繼續下一步直至完成初始化。

---

#### 3. **修改 POM 文件添加依賴**
編輯項目的 `pom.xml` 來引入 Spark 和 Scala 必需的庫文件。
```xml
<dependencies>
? ? <!-- Apache Spark Core -->
? ? <dependency>
? ? ? ? <groupId>org.apache.spark</groupId>
? ? ? ? <artifactId>spark-core_2.12</artifactId>
? ? ? ? <version>3.0.1</version>
? ? </dependency>

? ? <!-- Scala Library -->
? ? <dependency>
? ? ? ? <groupId>org.scala-lang</groupId>
? ? ? ? <artifactId>scala-library</artifactId>
? ? ? ? <version>2.12.10</version>
? ? </dependency>
</dependencies>
```
此處定義了 Spark 和 Scala 的具體版本號,建議依據實際需求調整至最新穩定版。

---

#### 4. **編寫 WordCount 程序**
在 src/main/scala 路徑下新增名為 `WordCount.scala` 的源碼文件,填入如下內容:
```scala
package com.example.wordcount

import org.apache.spark.{SparkConf, SparkContext}

object WordCount {
? def main(args: Array[String]): Unit = {
? ? if (args.length != 2) {
? ? ? println("Usage: WordCount <input-file-path> <output-directory>")
? ? ? System.exit(1)
? ? }

? ? val inputPath = args(0)
? ? val outputPath = args(1)

? ? // 初始化 Spark 配置對象
? ? val conf = new SparkConf()
? ? ? .setAppName("Word Count Application")
? ? ? .setMaster("local[*]") // 若部署到集群則改為 spark://master:7077

? ? val sc = new SparkContext(conf)

? ? try {
? ? ? // 加載文本文件作為 RDD
? ? ? val linesRDD = sc.textFile(inputPath)

? ? ? // 對每行拆分單詞并映射為(key-value)形式
? ? ? val wordsRDD = linesRDD.flatMap(_.split("\\s+")).map((_, 1))

? ? ? // 統計各單詞出現次數
? ? ? val countsRDD = wordsRDD.reduceByKey(_ + _)

? ? ? // 存儲結果到 HDFS 上指定目錄
? ? ? countsRDD.saveAsTextFile(outputPath)
? ? ??
? ? ? println(s"Results saved to $outputPath successfully.")
? ? } finally {
? ? ? sc.stop() // 關閉上下文資源釋放內存占用
? ? }
? }
}
```
該腳本實現了讀取輸入文件中的每一行字符串分割成單個詞語再計算各自頻次最后輸出存儲的功能。

---

#### 5. **構建 JAR 包**
通過 Maven 構建工具生成可執行 jar 文件以便后續提交給 Spark Cluster 處理。
- 移步至工程根目錄執行命令:
? ? ```bash
? ? mvn clean package -DskipTests=true
? ? ```
這一步驟將會清理舊有構件同時重新打包生成新版本jar包位于 target 文件夾內。

---

#### 6. **啟動服務與提交任務**
先保證本地已經開啟 HDFS 和 Spark Master Slave Services。
- 使用 shell 登錄服務器端口分別啟動 dfs 和 yarn/yarn-resourcemanager :
? ? ```bash
? ? start-dfs.sh && start-yarn.sh || jps # 查看進程列表驗證是否正常啟動
? ? ```

之后采用 spark-submit 方式遞交剛才制作好的 jar 至遠端節點解析運算得出結論存回分布式文件系統當中去:
```bash
../bin/spark-submit \
--class com.example.wordcount.WordCount \
--master spark://node141:7077 \
--executor-memory 1G \
--total-executor-cores 4 \
./target/spark-wordcount-1.0-SNAPSHOT.jar \
hdfs://node141:9000/input/wordcount.txt \
hdfs://node141:9000/output/
```

---

### 總結
以上步驟詳盡描述了從零開始直到成功運行一個簡單的大數據分析案例——即統計詞頻問題的整體解決方案。遵循本文檔指示能夠幫助初學者迅速掌握如何運用 IntelliJ IDEA 結合 Spark 實現高效的數據處理能力提升工作效率的同時也積累了寶貴經驗。

---

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

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

相關文章

SmartETL函數式組件的設計與應用

SmartETL框架主要采用了面向對象的設計思想&#xff0c;將ETL過程中的處理邏輯抽象為Loader和Processor&#xff08;對應loader模塊和iterator模塊&#xff09;&#xff0c;所有流程組件需要繼承或實現DataProvider&#xff08;iter方法&#xff09;或JsonIterator&#xff08;…

鴻蒙AI開發:10-多模態大模型與原子化服務的集成

鴻蒙AI開發&#xff1a;10-多模態大模型與原子化服務的集成 在鴻蒙生態中&#xff0c;多模態大模型與原子化服務的集成是一個重要課題。本文將介紹如何在鴻蒙平臺上進行多模態大模型與原子化服務的集成&#xff0c;以及相關的技術細節和實際案例。 鴻蒙AI開發概述 什么是鴻蒙AI…

python打卡day29@浙大疏錦行

知識點回顧 類的裝飾器裝飾器思想的進一步理解&#xff1a;外部修改、動態類方法的定義&#xff1a;內部定義和外部定義 作業&#xff1a;復習類和函數的知識點&#xff0c;寫下自己過去29天的學習心得&#xff0c;如對函數和類的理解&#xff0c;對python這門工具的理解等&…

20250516使用TF卡將NanoPi NEO core開發板出廠的Ubuntu core22.04.3系統降級到Ubuntu core16.04.2

20250516使用TF卡將NanoPi NEO core開發板出廠的Ubuntu core22.04.3系統降級到Ubuntu core16.04.2 2025/5/16 10:58 緣起&#xff1a;NanoPi NEO core核心板出廠預制的OS操作系統為Ubuntu core22.04.3系統。 【雖然是友善之臂提供的最新的系統&#xff0c;但是缺少很多用用程序…

密西根大學新作——LightEMMA:自動駕駛中輕量級端到端多模態模型

導讀 目前將自動駕駛與視覺語言模型&#xff08;VLMs&#xff09;結合的研究越來越火熱&#xff0c;VLMs已經證明了其對自動駕駛的重要作用。本文引入了一種用于自動駕駛的輕量級端到端多模態模型LightEMMA&#xff0c;它能夠集成和評估當前的商業和開源模型&#xff0c;以研究…

框架之下再看HTTP請求對接后端method

在當今的軟件開發領域&#xff0c;各類框架涌現&#xff0c;極大地提升了開發效率。以 Java 開發為例&#xff0c;Spring 框架不斷演進&#xff0c;Spring Boot 更是簡化到只需引入 Maven 包&#xff0c;添加諸如SpringBootApplication、RestController等注解&#xff0c;就能輕…

Vue+Go 自定義打字素材的打字網站

Typing_Key_Board 這是一個基于Vue 3和Go語言的自定義素材打字練習網站&#xff0c;靈感來源于常用字打字練習&#xff0c;解決了大多數網站無法自定義打字素材的問題。在 Typing_Key_Board (簡稱TKB)中&#xff0c;用戶可以自定義打字素材進行練習&#xff0c;在復習代碼的同…

開源物聯網平臺(OpenRemote)

在物聯網技術蓬勃發展的當下&#xff0c;OpenRemote作為一款強大的開源物聯網平臺&#xff0c;正逐漸在多個領域嶄露頭角。尤其是在智能能源管理領域&#xff0c;它為微電網和分布式能源網絡提供了全面且靈活的數據集成與管理方案&#xff0c;展現出獨特的優勢。 OpenRemote提供…

Spring Security與SaToken的對比與優缺點分析

Spring Security與SaToken對比分析 一、框架定位 Spring Security 企業級安全解決方案&#xff0c;深度集成Spring生態提供完整的安全控制鏈&#xff08;認證、授權、會話管理、攻擊防護&#xff09;適合中大型分布式系統 SaToken 輕量級權限認證框架&#xff0c;專注Token會…

每日一道leetcode(新學數據結構版)

208. 實現 Trie (前綴樹) - 力扣&#xff08;LeetCode&#xff09; 題目 Trie&#xff08;發音類似 "try"&#xff09;或者說 前綴樹 是一種樹形數據結構&#xff0c;用于高效地存儲和檢索字符串數據集中的鍵。這一數據結構有相當多的應用情景&#xff0c;例如自動…

【自然語言處理與大模型】大模型(LLM)基礎知識④

&#xff08;1&#xff09;微調主要用來干什么&#xff1f; 微調目前最主要用在定制模型的自我認知和改變模型對話風格。模型能力的適配與強化只是輔助。 定制模型的自我認知&#xff1a;通過微調可以調整模型對自我身份、角色功能的重新認知&#xff0c;使其回答更加符合自定義…

基于 Spring Boot 瑞吉外賣系統開發(十五)

基于 Spring Boot 瑞吉外賣系統開發&#xff08;十五&#xff09; 前臺用戶登錄 在登錄頁面輸入驗證碼&#xff0c;單擊“登錄”按鈕&#xff0c;頁面會攜帶輸入的手機號和驗證碼向“/user/login”發起請求。 定義UserMapper接口 Mapper public interface UserMapper exte…

什么是TCP協議?它存在哪些安全挑戰?

一、TCP協議概述 TCP&#xff08;傳輸控制協議&#xff09;是互聯網中面向連接、可靠的傳輸層協議&#xff0c;主要負責在不可靠的IP層上實現數據的可靠傳輸。其核心特點包括&#xff1a; 面向連接&#xff1a;通信前需通過三次握手&#xff08;SYN-SYN/ACK-ACK&#xff09;建…

12條熱門照片提示

12條熱門照片提示 1. 賽博朋克光彩 (Cyberpunk Glow-Up) 未在文件中顯示2. 卡通化我 (Cartoonify Me) Convert this image of [your subject here] into a 3D Pixar-style cartoon clean lines, soft lighting, expressive features, and a polished render that feels cine…

Java求職面試揭秘:從Spring到微服務的技術挑戰

文章簡述 在這篇文章中&#xff0c;我們將通過一個幽默的面試場景&#xff0c;揭秘互聯網大廠Java求職者在面試中面對的技術挑戰。面試官將從Spring框架、微服務架構到大數據處理等多個維度進行提問&#xff0c;并詳細講解這些技術點的應用場景和解決方案&#xff0c;幫助小白…

用Python輸出一個文件夾的所有文件結構

輸出一個文件夾的所有目錄和文件結構 新建一個Python文件&#xff0c;輸入 這個文件表示查詢一個文件夾所有的目錄結構 import osdef print_directory_structure(root_dir):"""打印樹狀目錄結構&#xff08;優化版&#xff09;"""if not os.p…

R語言的專業網站top5推薦

李升偉 以下是學習R語言的五個頂級專業網站推薦&#xff0c;涵蓋教程、社區、資源庫和最新動態&#xff1a; 1.R項目官網 (r-project.org) R語言的官方網站&#xff0c;提供軟件下載、文檔、手冊和常見問題解答。特別適合初學者和高級用戶&#xff0c;是獲取R語言核心資源的…

IntelliJ IDEA給Controller、Service、Mapper不同文件設置不同的文件頭注釋模板、Velocity模板引擎

通過在 IntelliJ IDEA 中的 “Includes” 部分添加多個文件頭模板&#xff0c;并在 “Files” 模板中利用這些包含來實現不同類型文件的注釋。以下是為 Controller、Service、Mapper 文件設置不同文件頭的完整示例&#xff1a; 1. 設置 Includes 文件頭模板 File > Settin…

LabVIEW雙音信號互調失真測量

該VI構建實現了一套完整的雙音信號互調失真&#xff08;IMD&#xff09;測量系統。該系統通過精確控制信號生成、采集與分析流程&#xff0c;實現對被測設備&#xff08;DUT&#xff09;非線性特性的量化評估&#xff0c;可廣泛應用于通信設備、音頻系統、射頻器件等領域的研發…

56.合并區間(java)

題目描述&#xff1a; 1.先判斷給定intervals是否為空或者大小是否為1&#xff0c;是則直接返回intervals。 2.對intervals進行排序 數組形式則使用&#xff1a;Arrays.sort(intevals,(a,b)->Integer.compare(a[0],b[0])); ArrayList形式&#xff1a;intervals.sort((a,b)-…