从本地文件系统读取/home/hadoop/wordData目录下的文件,在spark-shell中编程统计所有文件中各单词出现的次数,并把统计结果保存到/home/hadoop/output2中,要求所有的结果写入一个文件。
时间: 2023-12-25 09:06:59 浏览: 145
统计一个文件文件中,各单词出现的次数(c++)
4星 · 用户满意度95%
可以使用以下代码实现:
```scala
// 创建 SparkSession
val spark = SparkSession.builder().appName("WordCount").getOrCreate()
// 读取文件夹中的文件
val input = spark.sparkContext.textFile("/home/hadoop/wordData/*")
// 将每行数据按照空格分割成单词,并计数为 1
val counts = input.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)
// 将结果保存到文件中
counts.coalesce(1).saveAsTextFile("/home/hadoop/output2")
```
其中,`textFile` 方法用于读取指定路径下的所有文件,`flatMap` 方法将每行数据按照空格分割成单词并展开成一个个新的 RDD,`map` 方法将每个单词计数为 1,`reduceByKey` 方法将相同单词的计数相加。最后,使用 `coalesce` 方法将所有结果合并到一个分区中,并使用 `saveAsTextFile` 方法将结果保存到指定路径。
阅读全文