spark的广播变量和累加器

广播变量:

     广播变量允许开发人员在每个节点缓存只读的变量,而不是在任务之间传递这些变量。例如,使用广播变量能够高效地

在集群每个节点创建大数据的副本。同时,Spark还使用高效的广播算法分发这些变量,从而减少通信的开销。

    spark应用程序作业的执行由一系列调度阶段构成,而这些调度阶段通过Shuffle进行分隔。Spark能够在每个调度阶段自动

广播任务所需通用的数据,这些数据在广播时需要进行序列化缓存,并在任务运行前需进行反序列化。这就意味着当多个调

度阶段的任务需要相同的数据,显示地创建广播变量才用。

  可以通过调用SparkContext.broadcast(v)创建一个广播变量v,该广播变量封装在v变量中,可使用获取该变量value的方法进行访问。代码如下所示:

 

 

累加器:

     累加器是Spark中仅有通过关联操作进行累加的变量,因此能够有效地支持并行计算,它们能够用于计数和求和。Spark原生支持数值类型的累加器,不过开发人员能够定义新的类型。如果在创建累加器时指定了名称,可以通过Spark的UI监控界面中进行查看,这种方式能够帮助理解作业所构成的调度阶段执行过程。

     通过调用SparkContext.accumulator(v)方法初始化累加器变量v,在集群中的任务能够使用加法或者"+="操作符进行累加操作(scala和python中)。然而,它们不能在应用程序中读取这些值,只能由Driver程序通过读方法获取这些累加器的值。

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值