RDD实现单词计数

Scala(Spark Shell)方法

如果你在 spark-shell(Scala 环境)中运行:

1. 启动 Spark Shell

bash 复制代码
spark-shell

(确保 Spark 已安装,PATH 配置正确)

2. 执行单词统计

Scala 复制代码
// 1. 读取文件(确保路径正确!)
val lines = sc.textFile("file:///home/xdt/桌面/data.txt")

// 2. 拆分单词 + 统计
val wordCounts1 = lines.flatMap(line => line.split(" "))  // 按空格分割
val wordCounts2 = wordCounts1.map(word => (word, 1))           // 每个单词计数 1
val wordCounts3 = wordCounts2.reduceByKey(_ + _)               // 相同单词累加

// 3. 显示结果(前20个)
wordCounts3.take(20).foreach(println)

// 4. 保存结果
wordCounts3.saveAsTextFile("file:///home/xdt/桌面/wordcount_output")

3. 检查输出

  • 控制台:会打印前 20 个单词的统计结果。

  • 文件 :结果保存在 ~/桌面/wordcount_output/part-00000

注意路径写法,要写自己电脑上的路径。

上面是文件来源于本地的情况,如果文件位于HDFS里,要先把HDFS启动起来。

印象里好像是start-all.sh

IntelliJ IDEA 中运行

1. 安装必要工具

  • IntelliJ IDEA(建议使用 Ultimate 版,Community 版也支持 Scala)

  • Scala 插件(在 IDEA 中安装)

  • JDK 8/11(Spark 3.x 支持 JDK 8/11)

  • Scala SDK(建议 2.12.x,与 Spark 3.x 兼容)

2. 创建 Scala 项目

可以通过plugin下载scala,来创建scala项目

步骤 1:打开 IDEA,新建项目
  1. File → New → Project

  2. 选择 ScalaIDEA(或 SBT 项目)

  3. 设置:

    • Project SDK:选择 JDK(如 JDK 11)

    • Scala SDK:点击 "Create" 按钮,选择 Scala 版本(如 2.12.15)

不要忘记导Scala SDK!!!

步骤 2:配置项目结构
  • 项目名称:SparkWordCount

  • 项目路径:选择你的工作目录

3. 添加 Spark 依赖

方法 1:使用 SBT(推荐)

1.在项目根目录下找到 build.sbt 文件,添加以下内容:

Scala 复制代码
name := "SparkWordCount"
version := "1.0"
scalaVersion := "2.12.15"

libraryDependencies += "org.apache.spark" %% "spark-core" % "3.3.0"

2.等待 IDEA 自动加载依赖(或手动点击 Reload All SBT Projects)。

确保 Scala 版本匹配(Spark 3.3.0 需要 Scala 2.12.x)

方法 2:手动添加 JAR

1.下载 Spark 的预编译包:

bash 复制代码
wget https://archive.apache.org/dist/spark/spark-3.3.0/spark-3.3.0-bin-hadoop3.tgz
tar -xzf spark-3.3.0-bin-hadoop3.tgz

2.在 IDEA 中:

  • File → Project Structure → Libraries → + → Java

  • 添加 Spark 的 JAR 文件:

    • spark-3.3.0-bin-hadoop3/jars/*.jar

这里主包直接添加的炸包 下面是主包的spark的路径

/opt/spark-3.5.5-bin-hadoop3/jars/spark-core_2.12-3.5.5.jar

否则无法导入 org.apache.spark

4. 创建 WordCount 程序

步骤 1:新建 Scala 类
  1. 右键 src/main/scalaNew → Scala Class

  2. 输入名称 WordCount,类型选择 Object

步骤 2:编写代码
Scala 复制代码
import org.apache.spark.{SparkConf, SparkContext}

object WordCount {
  def main(args: Array[String]): Unit = {
    // 1. 创建 Spark 配置
    val conf = new SparkConf()
      .setAppName("WordCount")
      .setMaster("local[*]")  // 本地模式

    // 2. 初始化 SparkContext
    val sc = new SparkContext(conf)

    try {
      // 3. 读取文件(替换为你的路径)
      val lines = sc.textFile("file:///home/xdt/桌面/data.txt")

      // 4. 单词统计
      val wordCounts = lines
        .flatMap(_.split(" "))
        .map((_, 1))
        .reduceByKey(_ + _)

      // 5. 打印结果
      wordCounts.take(20).foreach(println)

      // 6. 保存结果
      wordCounts.saveAsTextFile("file:///home/xdt/桌面/wordcount_output")
    } finally {
      // 7. 关闭 SparkContext
      sc.stop()
    }
  }
}

5. 运行程序

方法 1:直接运行
  1. 右键 WordCount.scalaRun 'WordCount'

  2. 查看控制台输出和结果文件。

方法 2:打包后提交
  1. File → Project Structure → Artifacts → + → JAR → From modules

  2. 选择主类为 WordCount,构建 JAR。

  3. 通过 spark-submit 运行:

bash 复制代码
spark-submit --class WordCount SparkWordCount.jar
相关推荐
南瓜胖胖29 分钟前
【R语言编程绘图-plotly】
开发语言·plotly·r语言
半青年30 分钟前
IEC61850规约客户端软件开发实战(第二章)
java·c++·qt·网络协议·c#·信息与通信·iec61850
@Turbo@1 小时前
【QT】在QT6中读取文件的方法
开发语言·数据库·qt
TA远方1 小时前
【C#】一个简单的http服务器项目开发过程详解
服务器·http·c#·wpf·web·winform·console
CodeCraft Studio1 小时前
国产化Excel处理组件Spire.XLS教程:如何使用 C# 将 Excel(XLS 或 XLSX)文件转换为 PDF
pdf·c#·excel
_extraordinary_1 小时前
Java 异常
java·开发语言
moz与京1 小时前
【数据结构】字符串操作整理(C++)
开发语言·数据结构·c++
招财进宝。。1 小时前
c# 获取电脑 分辨率 及 DPI 设置
开发语言·c#·电脑
无处不在的海贼1 小时前
小明的Java面试奇遇之:支付平台高并发交易系统设计与优化[特殊字符]
java·开发语言·面试
居居飒1 小时前
深入理解 JDK、JRE 和 JVM 的区别
java·开发语言·jvm