作者left (881 forever)
看板Python
标题[问题] pyspark mapPartitions
时间Tue Dec 6 18:16:02 2016
各位大大好
下面是小的在玩mapPartitions时的程式片段、执行结果以及问题
测试环境: --master local[*]
程式片段:
rdd = sc.parallelize([ [1, 2, 3], [3, 2, 4], [5, 2, 7] ] , 10)
def test(partitions):
yield 1
#workable
#return 1 #error
#return [1]
#workable
rdd_test = rdd.mapPartitions(test)
s = rdd_test.collect()
print s
print rdd_test.getNumPartitions()
结果:
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
10
问题:
似乎如果要将每个partition映射成一个value输出时(上面是以value=1为例)
都需要用yield value,不能像map一样直接用return。如果要用return,就要弄成
return [value]。我目前测试的结果是这两种方式最後用collect会产生相同的结果。
这背後的道理以及原因是什麽啊?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.220.35.20
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1481019366.A.D57.html