我正在尝试在 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
}
}