Spark中的DAG和Stage

DAG(有向无环图)

Spark的DAG:就是spark任务/程序执行的流程图!

DAG的开始:从创建RDD开始

DAG的结束:到Action结束

一个Spark程序中有几个Action操作就有几个DAG!

Stage(阶段)

为什么需要划分Stage?
前面提到Spark可以根据代码执行流程形成一张有向无环图DAG,在执行的时候可以按照图中的流程顺序进行执行!并进行优化!如何优化?

1.对于宽依赖,由于Shuffle的存在,必须等到父RDD的Shuffle处理完成后,才能开始接下来的计算,所以需要在此处进行Stage的切分。
2.对于窄依赖,RDD之间的数据没有Shuffle,多个数据处理可以在同一台机器的内存中完成,所以窄依赖在Spark中被划分为同一个Stage;

总结:
可以根据宽依赖对DAG进行Stage阶段划分!
在同一个Stage阶段中的就都是窄依赖,可以形成pipeline,进行流水线操作!

posted @ 2021-11-12 20:34  lmandcc  阅读(329)  评论(0编辑  收藏  举报