Spark高级-广播变量
新的一年,先祝大家狗年旺旺旺。 广播变量 广播变量可以让程序高效地向所有工作节点发送一个较大的只读值,以供一个或多个Spark操作使用。 需求来源 我们都知道Spark分布式程序代码需要传递到Executor的各个task上运行,对于一些只读的数据,各个task需要 从driver端获取数据,这样效率低下,广播变量允许我们将数据提前广播到Exeutor上,task直接到所在的Executor 上获取数据,从而提高效率。 举个例子:只读Map数据10M,有50个executor,1000个task。 默认情况下1000个task有1000个副本 ,需要10*1000 不到10G的数据传输,集群中,消耗10G内存。 使用广播变量,广播到executor上,50个executor,需要10*50 500M的数据传输,大大减少的内存的消耗。 代码示例 1.调用SparkContext.broadcast方法创建一个Broadcast[T]对象。任何序列化的类型都可以这么实现。 2.通过value属性访问改对象的值(Java之中为value()方法) 3.变量只会被发送到各个节点一次,应作为只读...