2014-10-30 47 views
0

有沒有一套標準的規則,我應該遵循以確保爲Spark編寫Scala代碼將並行運行?編寫並行代碼的Apache星火

我發現自己正在編寫Spark代碼,其中包括對函數的調用,例如map & filter,我認爲它們將以並行/分佈方式運行。但我真的不知道如何測試這些功能是否並行/分佈式運行。是否有文本可用於解釋這一點,專門針對Spark,還是可應用於Spark的通用文本?

這個問題的兩個不同的答案:How to transform Scala nested map operation to Scala Spark operation?。一個答案聲稱另一個答案不是平行的。但我不確定爲什麼贊成一個實現而不是另一個。

+1

我認爲Spark指南很好地涵蓋了這個主題:http://spark.apache.org/docs/latest/programming-guide.html – 2014-10-30 16:29:09

+1

如果您需要更多的細節,您可以閱讀原創論文:https:// www。 cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf – 2014-10-30 16:29:51

+0

嗯,我再次檢查的答案,我看到你的問題的根源。 1)其他答案使用'rdd.foreach'在rdd上運行計算。這是錯誤的,因爲你不會看到任何計算結果。 2)我說它並不是平行的,而是在司機身上。這也是錯誤的。 'foreach'是'action'並因此迫使一個RDD計算,最終的答案返回給司機... – maasg 2014-10-30 17:07:41

回答

0

保持在RDD的東西,即地圖縮小ReduceBy關鍵GROUPBY等。此外,如果你要做一個foreach的RDD使用sc.parallelize的外面,然後爲每個做你的。