廣播變數和累加器
阿新 • • 發佈:2019-01-08
1.廣播變數
廣播變數理解圖
廣播變數使用
val conf = new SparkConf()
conf.setMaster(“local”).setAppName(“brocast”)
val sc = new SparkContext(conf)
val list = List(“hello xasxt”)
val broadCast = sc.broadcast(list)
val lineRDD = sc.textFile("./words.txt")
lineRDD.filter { x => broadCast.value.contains(x) }.foreach { println}
sc.stop()
注意事項
能不能將一個RDD使用廣播變數廣播出去?
不能,因為RDD是不儲存資料的。可以將RDD的結果廣播出去。
廣播變數只能在Driver端定義,不能在Executor端定義。
在Driver端可以修改廣播變數的值,在Executor端無法修改廣播變數的值。
2.累加器
累加器理解圖
累加器的使用
val conf = new SparkConf()
conf.setMaster(“local”).setAppName(“accumulator”)
val sc = new SparkContext(conf)
val accumulator = sc.accumulator(0)
sc.textFile("./words.txt").foreach { x =>{accumulator.add(1)}}
println(accumulator.value)
sc.stop()
注意事項
累加器在Driver端定義賦初始值,累加器只能在Driver端讀取,在Excutor端更新。