単語の出現頻度を出力する
同じキー(単語)を持つ値(カウント)を結合した後、この演習では最初の 10 個の単語頻度を返します。すべての要素は collect() で一度に取得できますが、これは推奨されません。RDD は非常に大きくなる可能性があり、メモリ不足でマシンがクラッシュすることがあります。
では、上位 10 個の単語を返したい場合はどうすればよいでしょうか?そのためには、まずキー(単語)と値(カウント)を入れ替え、キーをカウント、値を単語にします。現在、result_RDD では「キーが要素 0、値が要素 1」となっています。タプル内でキーと値を入れ替えたら、ペア RDD をキー(カウント)に基づいて並べ替えます。こうすることで、PySpark の sortByKey 操作を使うよりも、キーに基づいて RDD を簡単にソートできます。最後に、並べ替えた 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]))