廣播變量:頻繁使用 而且數據大 分發到每一個excutor節點 每個task從本地拿取使用
當在excutor端使用了Driver變量,不使用廣播變量,在每個excutor中有多少的task就有多少個Driver端變量副本
導致的問題:佔用了網絡IO,速度慢
如果使用廣播變量在每一個excutor端只有一份Driver端的變量副本
注意:
1).不能當RDD廣播出去,可以將RDD的結果廣播出去
2).廣播變量在Driver定義,在Excutor端不可改變,在Excutor端不能定義
```
val conf: SparkConf = new SparkConf().setAppName("DataProcessLauncher").setMaster("local[2]")
val sc = new SparkContext(conf)
val conf: SparkConf = new SparkConf().setAppName("DataProcessLauncher").setMaster("local[2]")
val sc = new SparkContext(conf)
@volatile var filterRuleRef: Broadcast[ArrayBuffer[String]] = sc.broadcast(filterRuleList)
```