印出單字出現頻率
把相同鍵(單字)的值(計數)合併之後,這個練習要你回傳前 10 個單字的出現頻率。你也可以用 collect() 一次取回所有元素,但這是不良做法且不建議。RDD 可能非常大:你可能會耗盡記憶體,導致電腦當機。
如果我們想回傳前 10 個單字呢?為此,你需要先把鍵(單字)和值(計數)對調,讓鍵是計數、值是單字。現在 result_RDD 的「鍵是第 0 個元素、值是第 1 個元素」。在你把 tuple 裡的鍵和值交換之後,接著要依鍵(計數)對成對 RDD 進行排序。如此一來,就能直接依鍵排序 RDD,而不必在 PySpark 使用 sortByKey。最後,從排序後的 RDD 依出現頻率回傳前 10 個單字。
你的工作空間中已提供 SparkContext sc 與 resultRDD。
本練習屬於課程
使用 PySpark 的 Big Data 基礎
練習說明
- 從
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]))