Scala Spark是否在所有情况下实现map reduce以并行运行任务?

时间:2014-05-26 14:36:41

标签: scala mapreduce apache-spark

为了更好地理解Spark作业的性能调优,我假设groupByKeymapflatMapcartesian等方法正在使用map reduce设计模式。引擎盖。

我要问的原因是为了更好地理解Spark的工作原理,因此编写运行更高性能的Spark Scala代码。

1 个答案:

答案 0 :(得分:3)

Spark将RDD上的操作分为两大类:转换和操作。

  • 转换:将分布式数据结构转换为另一种。 转换包括以下操作:map,flatmap,filter,groupByKey。有关完整列表,请参阅spark transformation functions

  • 操作:操作强制收集值并将结果返回给作业驱动程序。

所有转换函数都是惰性的,并且当需要它们保存的值时,将以分布式方式在spark worker中执行。通过链变换形成的有向无环图(DAG)称为“谱系”。一个给定的RDD。 操作将数据从分布式RDD(在工作者上)传递给驱动程序。

简而言之,是的,他们遵循分布式计算模型,类似map-reduce,有两个主要区别:(1)转换是懒惰的:直到需要时才计算;(2)可重用性:RDD形式的转换数据&# 39; s(弹性分布式数据集)可以重新用于进一步映射或减少变换。

为了深入了解Spark的分布式计算模型如何工作,我建议您阅读论文:Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing