gpt4 book ai didi

scala - Spark 的累加器让我很困惑。

转载 作者:行者123 更新时间:2023-12-04 17:51:39 26 4
gpt4 key购买 nike

我正在练习 Apache Spark,但遇到以下问题。

val accum = sc.accumulator( 0, "My Accumulator.")
println (accum) // print out: 0

sc.parallelize( Array(1, 2, 3, 4, 5) ).foreach( x => accum += x )
// sc.parallelize( Array(1, 2, 3, 4, 5) ).foreach( x => accum = accum + x )
println( accum.value ) // print out: 15

这行代码 sc.parallelize( Array(1, 2, 3, 4, 5) ).foreach( x => accum += x )工作得很好,但下面注释掉的代码不起作用。区别在于:
x => accum += x


x => accum = accum + x

为什么第二个不起作用?

最佳答案

它不起作用的原因有以下三个:

  • accum是一个值,因此不能重新分配
  • Accumulable class,它是 Accumulator 的基类仅提供 +=方法,而不是 +
  • 从工作人员的角度来看,累加器是只写的,因此您无法读取操作中的值。理论上+方法可以修改accum到位,但会比较困惑。
  • 关于scala - Spark 的累加器让我很困惑。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34094358/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com