【发布时间】:2016-07-17 23:56:14
【问题描述】:
我不明白为什么我的累加器没有被 Spark 正确更新。
object AccumulatorsExample extends App {
val acc = sc.accumulator(0L, "acc")
sc range(0, 20000, step = 25) map { _ => acc += 1 } count()
assert(acc.value == 800) // not equals
}
我的 Spark 配置:
setMaster("local[*]") // should use 8 cpu cores
我不确定 Spark 是否将累加器的计算分布在每个内核上,也许这就是问题所在。
我的问题是如何将所有 acc 值汇总到一个总和中并获得正确的累加器值 (800)?
PS
如果我限制核心数量setMaster("local[1]") 比一切正常。
【问题讨论】:
-
什么是
acc0?你在工作acc,是不是打错字了? -
对不起,我的意思是
acc。
标签: scala apache-spark accumulator