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: ArrayString): 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 实现高效的数据处理能力提升工作效率的同时也积累了宝贵经验。


相关推荐
mldong7 小时前
你的 Vue3 项目也能有钉钉同款审批流设计器:npm 装包,10 分钟画出第一条审批流
前端·vue.js
2分钟速写快排8 小时前
什么是 RAG?如何用 RAG 实现一个用户记忆?
前端·后端·ai编程
passerby60618 小时前
如何自己造一个时间处理库
前端·javascript·github
走到天涯海角9 小时前
react里面的长列表渲染优化
前端·react.js·前端框架
小羊没烦恼!10 小时前
Hello Web API系列教程——Web API与国际化
java·服务器·前端·javascript·php
北岛贰10 小时前
迷茫焦虑期,我做了一个带支付带官网的 AI 聊天虚拟恋人 App
前端·人工智能·后端
mayaairi11 小时前
Vue2 组件通讯(三):全局事件总线、PubSub、插槽与组件实例属性
前端·javascript·vue.js
kyriewen12 小时前
面试官问我:AI 都能写代码了,前端凭什么还值 25K
前端·javascript·人工智能
风骏时光牛马13 小时前
AI源码分析:拆解模型底层实现逻辑
前端
BillKu13 小时前
全局样式变量:CSS 自定义属性(--border-color)和SCSS 变量($border-color)的说明
javascript·css·scss