【发布时间】:2015-08-18 04:22:11
【问题描述】:
我有以下具有 4 个分区的 RDD:-
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(它只是打印迭代器的大小)的存在如何影响函数的最终结果?
【问题讨论】:
标签: apache-spark rdd