【发布时间】:2024-05-01 08:30:02
【问题描述】:
为了更好地了解 Spark 作业的性能调优,我假设 groupByKey、map、flatMap、cartesian 等方法在后台使用 map reduce 设计模式。
我问的原因是为了更好地了解 Spark 的工作原理,从而编写运行性能更高的 Spark Scala 代码。
【问题讨论】:
标签: scala mapreduce apache-spark
为了更好地了解 Spark 作业的性能调优,我假设 groupByKey、map、flatMap、cartesian 等方法在后台使用 map reduce 设计模式。
我问的原因是为了更好地了解 Spark 的工作原理,从而编写运行性能更高的 Spark Scala 代码。
【问题讨论】:
标签: scala mapreduce apache-spark
Spark 将 RDD 上的操作分为两大类:转换和动作。
转换:将分布式数据结构转换为另一个。 转换包括以下操作:map、flatmap、filter、groupByKey。完整列表见spark transformation functions
Actions:Actions 强制收集值并将结果返回给作业驱动程序。
所有转换函数都是惰性的,当需要它们持有的值时,它们将以分布式方式在 spark 工作人员中执行。由变换链接形成的有向无环图(DAG)称为给定 RDD 的“沿袭”。 Actions 会将数据从分布式 RDD(在工作人员上)汇集到驱动程序。
简而言之,是的,它们遵循类似于 map-reduce 的分布式计算模型,但有两个主要区别:(1) 转换是惰性的:直到需要时才计算;(2) 可重用性:以 RDD 的形式转换数据 (弹性分布式数据集)可以重新用于进一步映射或减少转换。
想要深入了解 Spark 的分布式计算模型是如何工作的,推荐阅读论文:Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing
【讨论】: