看板 Python 關於我們 聯絡資訊
各位大大好 下面是小的在玩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