柚子快報邀請碼778899分享:c# Spark實戰(zhàn):詞頻統(tǒng)計
柚子快報邀請碼778899分享:c# Spark實戰(zhàn):詞頻統(tǒng)計
文章目錄
一、Spark實戰(zhàn):詞頻統(tǒng)計(一)Scala版1、分步完成詞頻統(tǒng)計2、一步搞定詞頻統(tǒng)計
(二)Python版1、分步完成詞頻統(tǒng)計2、一步搞定詞頻統(tǒng)計
二、實戰(zhàn)總結(jié)
一、Spark實戰(zhàn):詞頻統(tǒng)計
(一)Scala版
1、分步完成詞頻統(tǒng)計
(1)基于文本文件創(chuàng)建RDD
執(zhí)行命令:val lines = sc.textFile("/home/test.txt")
(2)按空格拆分作扁平化映射
執(zhí)行命令:val words = lines.flatMap(_.split(" "))
(3)將單詞數(shù)組映射成二元組數(shù)組
執(zhí)行命令:val tuplewords = words.map((_, 1))
(4)將二元組數(shù)組按鍵歸約
執(zhí)行命令:val wordcount = tuplewords.reduceByKey(_ + _)
(5)將詞頻統(tǒng)計結(jié)果按次數(shù)降序排列
執(zhí)行命令:val sortwordcount = wordcount.sortBy(_._2, false)
2、一步搞定詞頻統(tǒng)計
執(zhí)行命令:sc.textFile("/home/test.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _).sortBy(_._2, false).collect.foreach(println)
(二)Python版
1、分步完成詞頻統(tǒng)計
(1)基于文本文件創(chuàng)建RDD
執(zhí)行命令:lines = sc.textFile("/home/test.txt")
(2)按空格拆分作扁平化映射
執(zhí)行命令:words = lines.flatMap(lambda line : line.split(' '))
(3)將單詞數(shù)組映射成二元組數(shù)組
執(zhí)行命令:tuplewords = words.map(lambda word : (word, 1))
(4)將二元組數(shù)組按鍵歸約
執(zhí)行命令:wordcount = tuplewords.reduceByKey(lambda a, b : a + b)
(5)將詞頻統(tǒng)計結(jié)果按次數(shù)降序排列
執(zhí)行命令:sortwordcount = wordcount.sortBy(lambda wc : wc[1], False)
2、一步搞定詞頻統(tǒng)計
執(zhí)行命令
for line in sc.textFile('/home/test.txt').flatMap(lambda line : line.split(' ')).map(lambda word : (word, 1)).reduceByKey(lambda a, b : a + b).sortBy(lambda tup : tup[1], False).collect():
print(line)
二、實戰(zhàn)總結(jié)
在Spark實戰(zhàn)中,我們通過Scala和Python兩個版本分別實現(xiàn)了詞頻統(tǒng)計的功能。首先,我們從文本文件中創(chuàng)建了RDD,然后按空格拆分進行扁平化映射,接著將單詞數(shù)組映射成二元組數(shù)組,之后對二元組數(shù)組進行按鍵歸約,最后將詞頻統(tǒng)計結(jié)果按次數(shù)降序排列。在分步實現(xiàn)的基礎(chǔ)上,我們還可以通過一步命令直接完成整個流程。通過這次實戰(zhàn),我們對Spark的基本操作有了更深入的了解,為后續(xù)的學(xué)習(xí)和實踐打下了基礎(chǔ)。
柚子快報邀請碼778899分享:c# Spark實戰(zhàn):詞頻統(tǒng)計
相關(guān)文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。