在调用动作之前,Spark实际上做了什么?

时间:2015-12-22 19:02:59

标签: apache-spark

必须通过调用操作来触发Sparks转换。如果没有调用任何动作,Spark究竟做了什么?在触发执行之前,哪些部分或过程涉及处理延迟操作(例如转换)?

2 个答案:

答案 0 :(得分:3)

tl; dr Spark 几乎什么都没有(考虑到它的作用)。

应用变换会创建 RDD沿袭,即RDD的DAG。这就是RDD如何能够满足其名称中的 R - 具有弹性并能够在缺少地图输出的情况下恢复。执行程序,无序列化,通过线路发送或类似的网络相关活动都不会执行任何操作。它所做的就是从现有的RDD中创建新的RDD,构建RDD图。

每次转换调用都会返回一个新的RDD。您从SparkContext开始并构建一个"管道"应用转换。

当DAGScheduler将RDD转换为TaskSets / TaskSetManagers的阶段时,在调用操作来提交作业时

仅 / p>

P.S。但是,一些转换会触发sortByzipWithIndex等作业。请参阅https://issues.apache.org/jira/browse/SPARK-1021

答案 1 :(得分:0)

我的理解是,在调用任何动作之前,Spark只构建DAG。

当你调用一个Action时,它会执行它到目前为止构建的DAG。

因此,如果您不调用某个操作,则不会进行任何处理。它唯一建造DAG。