当此代码在不同的执行器上运行时,对于 n 种情况,实现 Spark 内部调用方法的循环的方法是什么



我正在尝试在 n 种情况下实现 Spark 内部调用方法的循环:

int counter=0
while (counter <N)
{
 //do something
counter++;
}

这是我必须在Spark的调用方法内部完成的。但是,在调用方法的情况下,计数器将位于驱动程序上,而内部代码将位于执行器上。 万一有火花怎么办?

谢谢

如果你真的想保留你的"while"逻辑,你可以使用Spark累加器:

Accumulator<Integer> counter = sc.accumulator(0);
while (counter.value < N) {
     myRDD.foreach(x -> {
         counter.add(1); 
         // do something
     }
}

最新更新