У меня есть следующий РДД, который имеет 4 раздела: -mapPartitions возвращает пустой массив
val rdd=sc.parallelize(1 to 20,4)
Теперь я пытаюсь позвонить mapPartitions на это: -
scala> rdd.mapPartitions(x=> { println(x.size); x }).collect
5
5
5
5
res98: Array[Int] = Array()
Почему он возвращает пустой массив? Функция anonymoys просто возвращает тот же самый итератор, который он получил, а затем как он возвращает пустой массив? Самое интересное в том, что если я удалю Println заявление, он действительно возвращает непустой массив: -
scala> rdd.mapPartitions(x=> { x }).collect
res101: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
Это я не понимаю. Как получилось, что println (который просто печатает размер итератора) влияет на конечный результат функции?