每个RDD由多分区组成的,实际开发建议对每个分区数据的进行操作,map函数使用mapPartitions代替、foreache函数使用foreachPartition代替。
-
foreachPartition代码实战:
>>>def f(iterator): >>> for x in iterator: >>> print(x) >>>sc.parallelize([1, 2, 3, 4, 5]).foreachPartition(f)
-
MapPartition代码实战:
>>> rdd = sc.parallelize([1, 2, 3, 4], 2) >>> def f(iterator): yield sum(iterator) ... >>> rdd.mapPartitions(f).collect() [3, 7]