[問題] pyspark mapPartitions
各位大大好
下面是小的在玩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://www.ptt.cc/bbs/Python/M.1481019366.A.D57.html
Python 近期熱門文章
PTT數位生活區 即時熱門文章