idea 建立maven 項目輸入maven坐标
maven 坐标編輯maven檔案
Spark 體系
中間層Spark,即核心子產品Spark Core,必須在maven中引用。
編譯Spark還要聲明java8編譯工具。
1.8
org.apache.spark
spark-core_2.11
2.1.0
maven-compiler-plugin
${java.version}
${java.version}
idea自動加載引用,在視窗左側Project導航欄-->External Libraries中看到引用org.apache.spark中spark-core_2.11-2.1.0.jar檔案。
idea Externel Libraries
注:Spark Streaming是流式計算架構、SparkSQL資料庫工具、Mlib機器學習架構、GraphX圖計算工具。
Java 8 lambda函數風格的wordCount//定義單詞總數累加器、和停用詞累加器
Accumulator countTotal = jsc.accumulator(0);
Accumulator stopTotal = jsc.accumulator(0);
// 檔案初始化RDD
JavaRDD stopword = jsc.textFile("data/text/stopword.txt");
JavaRDD rdd = jsc.textFile("data/text/Hamlet.txt");
// RDD 轉換為List
List stopWordList = stopword.collect();
// Broadcast 廣播變量,task共享executor的變量
Broadcast> broadcastedStopWordSet = jsc.broadcast(stopWordList);
rdd.filter(l->l.length()>0)
.flatMap(l-> Arrays.asList(l.trim().split(" ")).iterator())
// 将line分割展成詞向量,詞向量在連接配接,傳回Rdd
.map(v->v.replaceAll("['.,:;?!-]", "").toLowerCase())
// 特殊字元處理, Rdd
.filter(v->{
boolean isStop = false;
countTotal.add(1);
if(broadcastedStopWordSet.value().contains(v)){
stopTotal.add(1);
isStop = true;
}
return !isStop;
})
//周遊總數計數、停用詞計數,過濾停止詞, Rdd
.mapToPair(v-> new Tuple2<>(v,1))
.reduceByKey((v1,v2)->v1+v2)
//統計個數
.mapToPair(p-> new Tuple2<>(p._2,p._1))
.sortByKey(false)
//排序
.take(10).forEach(e->{
System.out.println(e._2+":"+e._1);
});将line分割展成詞向量,詞向量連接配接,flatmap傳回Rdd
特殊字元處理,傳回 Rdd
周遊總數計數、停用詞計數,過濾停止詞, 傳回Rdd
Reduce Rdd,傳回Rdd
排序 SortByKey,傳回 Rdd
後期有更多案例介紹Java 8 lambda風格的RDD開發