spark 广播变量

Spark执行一个阶段(stage)时,会为待执行函数建立闭包,也就是阶段所有任务所需信息的二进制形式。这个闭包包括驱动程序里函数引用的所有数据结构。Spark把这个闭包发送到集群的每个executor上。
当许多任务需要访问同一个(不可变的)数据结构时,我们应该使用广播变量。它对任务闭包的常规处理进行扩展,使我们能够:
1. 在每个executor上将数据缓存为原始的Java对象,这样就不用为每个任务执行反序列化;

2. 在多个作业和阶段之间缓存数据。


对每个executor只要执行一次传输数据:
val a = ... 
val bb = sc.broadcast(a)  
... 
def query(path: String) = { 
  sc.textFile(path).map(l => score(l, bb.value)) 
  ...  

}



【来自@若泽大数据】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值