大家好,我是一條~
5小時推開Spark的大門,第三小時,帶大家做一個大資料入門的經典案例——WordCount,
話不多說,開干!
題目描述
WordCount,顧名思義,統計檔案中不同單詞出現的次數,一般在日志分析中經常會用到,
一條在學習Hadoop時做的一個專案是分析金庸小說中的人物關系,那要做的第一步就是統計各個人物出現的次數,
案例分析
如果讓你用Java來實作這個需求,相信大家都會有思路,
- 分詞:把長句子分成單詞,如果是規范的文本,可以用空格分割,不規范的文本,可以用
jieba分詞,感興趣的同學可以百度了解一下, - 分組計數:相同的單詞一組,計算出現的次數,并用一個map的保存,
- 保存結果:將結果寫入檔案,
案例實作
1.本地實作
打開上一節建的WordCount.scala檔案,編輯如下代碼,每行都有注釋,對Scala不熟悉的同學先不要糾結語法問題,我們的重點是Spark,
object WordCount {
def main(args: Array[String]): Unit = {
// 創建 Spark 運行配置物件
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("WordCount")
// 創建 Spark 背景關系環境物件(連接物件)
val sc = new SparkContext(sparkConf)
// 讀取檔案
var input=sc.textFile("src/main/java/test.txt");
// 分詞
var lines=input.flatMap(line=>line.split(" "))
// 分組計數
var count=lines.map(word=>(word,1)).reduceByKey{(x,y)=>x+y}
// 列印結果
count.foreach(println)
//關閉 Spark 連接
sc.stop()
}
}
注意檔案存放的路徑,保證能讀取到檔案,
輸出結果

2.提交到服務器
打包成jar包,上傳到服務器,記得修改成服務上的檔案路徑,
#啟動master
./sbin/start-master.sh
#啟動worker
./bin/spark-class org.apache.spark.deploy.worker.Worker spark://VM-24-10-centos:7077
#提交作業
./bin/spark-submit --master spark://VM-24-10-centos:7077 --class WordCount /data/opt/spark/file/spark-wordcount-1.0-SNAPSHOT.jar
輸出結果

最后
ok,一個經典的入門案例我們已經完成了,是不是覺得Spark也沒那么難,
但是,不知道同學們有沒有如下疑問:
- Spark內部是如何組合計數的?
- Worker和Master是什么關系?
- RDD是什么東西?
如果有,請堅持打卡,明后兩天將會解答大家的疑惑,填坑——Spark核心編程,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/421693.html
標籤:其他
上一篇:初學RabbitMQ(一)
下一篇:訊息佇列可靠性和順序性消費
