打印词频
在将相同键(单词)的值(计数)合并之后,本练习将返回前 10 个单词的词频。您本可以使用 collect() 一次性取回所有元素,但这不是好做法且不推荐。RDD 可能非常大:您可能会耗尽内存并导致计算机崩溃。
如果我们想返回前 10 个高频单词怎么办?为此,您需要先交换键(单词)和值(计数),使键为计数、值为单词。当前 result_RDD 的"键是元素 0、值是元素 1"。在元组中交换键和值后,您将基于键(计数)对成对 RDD 排序。这样更容易按照键对 RDD 排序,而不必在 PySpark 中使用 sortByKey 操作。最后,您将从已排序的 RDD 中返回基于词频的前 10 个单词。
您的工作区中已提供 SparkContext sc 和 resultRDD。
本练习是课程的一部分
使用 PySpark 的大数据基础
练习说明
- 从
resultRDDRDD 中打印前 10 个单词及其词频。 - 在
resultRDD中交换键和值。 - 按照降序对键排序。
- 从排序后的 RDD 中打印出现频率最高的前 10 个单词及其词频。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Display the first 10 words and their frequencies from the input RDD
for word in resultRDD.____(10):
print(word)
# Swap the keys and values from the input RDD
resultRDD_swap = resultRDD.____(lambda x: (x[1], x[____]))
# Sort the keys in descending order
resultRDD_swap_sort = resultRDD_swap.____(ascending=False)
# Show the top 10 most frequent words and their frequencies from the sorted RDD
for word in resultRDD_swap_sort.____(____):
print("{},{}". format(____, word[0]))