Spark广播变量、累加器、WebUI
一、广播变量
使用原因及优点
Driver提交N个task到Excutor,Excutor会产生N个存放task的内存,换句话说就是,发送多少个task,就携带多少个Driver端副本,为了解决这种问题,需要用到广播变量
当给Driver端的变量贴上broadcast标签后,Excutor会产生一个BlockManager来管理broadcast,待到下一个task任务提交给Excutor时,task会先向BlockManager寻找是否存在相关的broadcast,如果有就直接使用。
优点:Driver提交N个task到Excutor,Excutor会产生一个内存来处理
原理图
注意事项
广播变量只能在Driver定义初始化,在Executor使用,不能在Excutor中改变广播变量的值
不能将RDD广播出去,可以将结果广播出去,rdd.collect()
代码
val conf = new SparkConf().setAppName("broadCastTest").setMaster("local")
val sc = new SparkContext(conf)
//添加广播变量
va