基于Spark Shell的worldcount程序

本文介绍了如何使用SparkShell执行WordCount程序,详细步骤包括启动Spark、创建输入文件和执行Scala代码。同时,概述了Scala语言的基本数据类型、类和对象、函数、数组、列表、集合、元组以及控制结构,强调了Lambda表达式和高阶函数的概念。此外,还提及了Scala中的映射和单例对象等关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一),基于Spark Shellworldcount程序

1.启动spark

首先进入/usr/local/spark/bin目录,执行spark-shell 启动spark

便成功进入Spark Shell提供以Scala和Python语言为接口的交互式Spark编程环境。

2.创建example.txt文件

新打开一个终端,进入/home/hadoop

创建一个example文件,并输入内容。

3.在交互式面板依次输入并执行程序

val textFile = sc.textFile("file:///home/hadoop/example.txt")(找到文件)

val wordCount = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)(转换操作,将文本每行按“ ”分开成一个个单词,再整合到一起,之后将单词变为(word,1)形式,在按照key值合并value )

wordCount.collect()(动作操作,执行转换操作并输出结果)

(二),scala语言

1,基本数据类型

2.Scala语言的类和对象

定义一个单例对象

3.Scala语言的函数

Scala中的匿名函数:lambda表达式

(参数) => {表达式}

通过lambda表达式定义一个函数变量

Scala中的高阶函数

Scala函数中的占位符

4.Scala语言的数组

定长数组:

变长数组:

5.Scala语言的列表

6.Scala语言的集合

  1. Scala语言的元组

  1. Scala语言的映射

  1. Scala语言的控制结构

If语句

While语句

for语句

### Apache Spark WordCount 完整示例代码 以下是基于 Scala 和 Python 的完整 `WordCount` 示例代码,适用于 Apache Spark。 #### Scala 版本的 WordCount 示例代码 ```scala import org.apache.spark.SparkConf import org.apache.spark.SparkContext object WordCount { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("Word Count").setMaster("local[*]") val sc = new SparkContext(conf) // 加载文本文件并将其拆分为单词 val textFile = sc.textFile("input.txt") // 替换为实际路径 val words = textFile.flatMap(line => line.split(" ")) // 统计每个单词的数量 val wordCounts = words.map(word => (word, 1)).reduceByKey(_ + _) // 输出结果到 HDFS 或本地文件系统 wordCounts.saveAsTextFile("output") sc.stop() } } ``` 此代码加载了一个名为 `input.txt` 的文本文件,并通过 `flatMap` 将其按空格分割成多个单词[^1]。接着使用 `map` 方法将每个单词映射为 `(word, 1)` 键值对,并通过 `reduceByKey` 对相同的键进行累加操作[^2]。 --- #### Python (PySpark) 版本的 WordCount 示例代码 ```python from pyspark import SparkConf, SparkContext if __name__ == "__main__": # 配置 Spark 应用程序 conf = SparkConf().setAppName("PythonWordCount").setMaster("local[*]") sc = SparkContext(conf=conf) # 加载文本文件并处理 lines = sc.textFile("input.txt", 1) # 替换为实际路径 counts = ( lines.flatMap(lambda x: x.split(' ')) .map(lambda x: (x, 1)) .reduceByKey(lambda a, b: a + b) ) # 保存结果到指定位置 counts.saveAsTextFile("output") sc.stop() ``` 这段 PySpark 代码实现了与上述 Scala 版本相同的功能。它读取一个文本文件 (`input.txt`) 并按照空格分隔符提取单词[^4],随后统计每个单词出现的频率并将结果写入输出目录。 --- #### 运行环境配置说明 为了运行以上代码,需完成以下步骤: 1. **下载并解压 Spark** 下载官方发布的 Spark 压缩包(如 `spark-3.4.0-bin-hadoop3-scala2.13.tgz`),并通过命令解压缩和重命名: ```bash tar xvf spark-3.4.0-bin-hadoop3-scala2.13.tgz mv spark-3.4.0-bin-hadoop3-scala2.13 spark-3.4.0 ``` 2. **设置环境变量** 编辑 `/etc/profile` 文件以添加 Spark 路径: ```bash export SPARK_HOME=/opt/bigdata/spark-3.4.0 export PATH=$SPARK_HOME/bin:$PATH source /etc/profile ``` 3. **启动 Spark Shell 或提交作业** 使用如下命令启动交互式 shell 或者直接提交应用程序: ```bash ./bin/pyspark # 启动 PySpark REPL ./bin/spark-submit --class com.example.WordCount target/scala-2.13/your-jar-file.jar input.txt output/ ``` --- #### 测试数据样例 假设输入文件 `input.txt` 内容如下: ``` hello world hello apache spark streaming example ``` 执行完成后,在输出目录下会生成类似的结果文件,内容可能类似于: ``` (world,1) (hello,2) (apache,1) (spark,1) (streaming,1) (example,1) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐风797

hadoop所有安装包

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值