任务描述 本关任务:使用 Spark Core 知识编写一个词频统计程序。 编程要求 请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下: 对文本文件内的每个单词都统计出其出现的次数。 按照每个单词出现次数的数量,降序排序。 文本文件内容如下: hello java hello python java hello python python hello flink scala scala scala scala scala 说明:单词与单词之间以空格进行分割。 测试说明 补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。 测试输入:无 预期输出: (scala,5) (hello,4) (python,3) (java,2) (flink,1)
时间: 2024-02-19 12:03:56 浏览: 127
```scala
import org.apache.spark.{SparkConf, SparkContext}
object WordCount {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("WordCount").setMaster("local")
val sc = new SparkContext(conf)
val input = sc.textFile("file:///root/data/wordcount.txt")
val words = input.flatMap(line => line.split(" "))
val counts = words.map(word => (word, 1)).reduceByKey((a, b) => a + b)
val sortedCounts = counts.map(item => item.swap).sortByKey(false).map(item => item.swap)
val top5 = sortedCounts.take(5)
top5.foreach(item => println(item))
}
// Begin
// 补充代码
// 对文本文件内的每个单词都统计出其出现的次数。
// 按照每个单词出现次数的数量,降序排序。
// End
}
```
补充代码如下:
```scala
val counts = words.map(word => (word, 1)).reduceByKey((a, b) => a + b)
val sortedCounts = counts.map(item => item.swap).sortByKey(false).map(item => item.swap)
```
解释:
1. 首先对每个单词进行计数,得到一个元组 (word, count)。
2. 接着将元组中的 key 和 value 交换位置,即得到 (count, word) 的元组。
3. 对 (count, word) 的元组按照 count 进行降序排序。
4. 最后再将 (count, word) 的元组中的 key 和 value 交换位置,得到 (word, count) 的元组,即为按照单词出现次数降序排列的结果。
阅读全文