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)
//添加广播变量
val list = List[String]("zhangsan","lisi")
val bcList: Broadcast[List[String]] = sc.broadcast(list)
val nameRDD = sc.parallelize(List[String

本文介绍了Spark中的广播变量、累加器和WebUI的使用,强调了广播变量减少数据传输的优点,累加器在统计Executor执行数量中的作用,以及如何通过WebUI监控应用状态和历史数据。并提供了相关代码示例和配置方法。
最低0.47元/天 解锁文章
3591

被折叠的 条评论
为什么被折叠?



