2014-10-30 51 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的外面,然后为每个做你的。