使用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遍歷打印結果,這樣就計算得到了這個單詞的詞頻。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM