Я создал RDD следующим образом:
JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(2, 3, 4));
И этот класс Function2
public class FoldFunction implements Function2<Integer, Integer, Integer> {
@Override
public Integer call(Integer v1, Integer v2) throws Exception {
System.out.println("v1 " + v1 + " v2 " + v2);
return (v1.intValue() + 1);
}
}
Затем я вызываю функцию fold следующим образом:
Integer val2 = rdd.fold(0, new FoldFunction ());
Функция вызова в классе FoldFunction вызывается четыре раза, что на один раз больше, чем я ожидал. Значения для каждого вызова:
v1 0 v2 2
v1 1 v2 3
v1 2 v2 4
v1 0 v2 3
Я не уверен, почему функция вызова вызывается четыре раза или почему при четвертом вызове значения параметров равны 0 и 3.
Может кто-нибудь пролить некоторый свет на это?
Я использую Java 8 и Spark Core 2.3.2. Спасибо.