Apache Spark сокращает функцию вызова действия чаще, чем ожидалось

Я создал 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. Спасибо.


person SME    schedule 19.10.2018    source источник
comment
Спасибо за ответ. Мне придется выучить шкалу, чтобы понять ответ.   -  person SME    schedule 20.10.2018