Spark共享变量&&广播变量&&累加器

共享变量

每个算子内的函数是在每个远程集群节点执行的,
这个函数里的变量都必须做task级别的复制
而且某个节点更新数据不会回传给Driver,互相隔离
这种通用的可读可写的变量性能很低

广播变量

在每个节点只复制一份数据,数据必须是只读的。
spark本身提供了高效的广播算法支持广播数据
在跨多个stage且使用相同数据的情况下使用广播变量
val a = sc.broadcast(v)广播v这个变量
a在算子的参数的函数里只能使用 a.value 读取值
不允许也没提供许广播变量进行修改

累加器

只允许做添加的变量
默认只支持数值类型的累加器,其他类型可以自定义
中间计算过程不能使用value
逻辑上不允许,语法上是允许的
命名累加器
sc.longAccumulater(name)
可以在webUI上查看累加器的结果
非命名累加器
sc.longAccumulater
查看不到任何结果
自定义累加器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值