当前位置: 代码迷 >> 综合 >> scala 计算器数字不变化
  详细解决方案

scala 计算器数字不变化

热度:18   发布时间:2024-01-16 08:50:31.0

var counter = 0

val data = Seq(1,2,3)

var rdd = sc.parallelize(data)

rdd.foreach(x=>counter+=x)

println(counter)

这是为什么呢?所有对RDD的函数调用,虽然代码上看起来在Driver程序中运行的,但实际计算都不在本地。即使单机本地模式运行,也是在单独的执行器进程上运行。每个job的执行,都会经历序列化、网络传输、反序列化和运行的过程。

在执行过程中,只是计算节点上的counter会自增,而Driver程序的counter不会发生变化。执行完成后,结果返回到Driver程序中(示例中的foreach没有返回值),而Driver中的counter依然还是当初的那个Driver,值为0.