火花转换必须通过调用操作来触发。如果不执行任何操作,Spark会做什么?在触发执行之前,处理惰性操作(例如,转换)涉及哪些部分或过程?
tl; dr Spark几乎不执行任何操作(考虑到它通常执行的操作)。
应用转换会创建RDD沿袭,即RDD的DAG。这就是RDD可以满足R的要求的方式-具有弹性并且在丢失地图输出的情况下能够恢复。执行器上不会执行任何操作,序列化,通过有线发送或类似的与网络相关的活动也不会发生。它所做的就是从现有的RDD中创建新的RDD,以构建RDD图。
每个转换调用都会返回一个新的RDD。您从SparkContext开始,并构建应用转换的“管道”。
这是只有当一个动作被调用时DAGScheduler转变成RDDS TaskSets / TaskSetManagers这反过来会作为遗嘱执行人并行任务执行阶段提交作业。
ps但是,有两次转换会触发像sortBy
或的工作zipWithIndex
。参见https://issues.apache.org/jira/browse/SPARK-1021。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句