1. 程式人生 > 其它 >使用Spark RDD完成詞頻統計

使用Spark RDD完成詞頻統計

1、實驗要求

對給定的一個英文文字,使用Spark完成文字內容的讀取並轉換成RDD,然後使用RDD的運算元統計每個單詞出現的次數,將統計結果按從大到小的順序列印到控制檯上。

2、實驗程式碼

import findspark
findspark.init()
from pyspark import SparkContext, SparkConf

sparkConf = SparkConf()
sparkConf.setAppName("wordcount")
sparkConf.setMaster("local")
sparkContext = SparkContext(conf=sparkConf)

txtFile = r'C:\Users\LYW\Desktop\英文文件.txt'  # 檔案路徑
rdd = sparkContext.textFile(txtFile)

rdd.flatMap(lambda x: x.split()).map(lambda x: (x, 1)).reduceByKey(lambda x, y: x + y).sortBy(keyfunc=(lambda x: x[1]),ascending=False).foreach(lambda x: print(x))

3、程式設計思路

既然我們要統計單詞出現的次數,那麼就要先把資料匯入,可以用sc.txtFile()方法來載入檔案資料,該方法把檔案的URI作為引數,要分割單詞,就可以使用rdd中的flatMap方法,它會遍歷textFile中的每行文字內容,當遍歷到其中一行文字內容時,會把文字內容賦值給變數x,並執行lamda表示式。接著執行x.split()).map(lambda x: (x, 1))會得到一個對映map,這個對映中包含了很多個(key,value),針對這個對映,執行reduceByKey(lambda x, y: x + y)操作,這個操作會把對映中的所有(key,value)按照key進行分組,然後使用sortBy函式進行按照詞頻降序排序,最後使用foreach遍歷列印結果,這樣就計算得到了這個單詞的詞頻。