Spark的累加器(Accumulator)的使用要点

1、累加器的创建

     在驱动器节点中,调用 SparkContext.accumulator(initialValue) 方法,创建出存有初始值的累加器。返回值为 org.apache.spark.Accumulator[T] 对象,其中 T 是初始值initialValue 的类型。

2、累加器值的累加

     对于工作节点来说,只能对累加器进行累加值操作,比如python或者scala语言中,可以使用累加器的+=操作来进行。

3、工作节点无法读取累加器的值,从任务的角度看,累加器是一个只写变量。只有驱动器节点可以读取。

4、重要提醒,也是本文存在的意义

      问题:鉴于task可能因为各种原因导致被重复执行,因此,转化操作的代码中对累加器进行值累加,可能并不能保证只执行一次,这就会产生问题。

      解决:如果要确保每个任务只对累加器累加一次,那么必须把累加器放在foreach这样的行动操作中。

      建议:在转化操作中,累加器通常只用于调试目的,不要用于实际的业务执行数判断。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值