Spark的DAG
什么是DAG
- DAG(Directed Acyclic Graph)叫做有向无环图,原始的RDD通过一系列的转换就就形成了DAG,根据RDD之间的依赖关系的不同将DAG划分成不同的Stage,对于窄依赖,partition的转换处理在Stage中完成计算。对于宽依赖,由于有Shuffle的存在,只能在parent RDD处理完成后,才能开始接下来的计算,因此宽依赖是划分Stage的依据。
划分stage的过程
- 从最后一个RDD开始,调用递归算法查找该RDD后开始遍历,判断父RDD和该RDD的依赖关系,如果是宽依赖,就把父RDD和前面所有的RDD都划分成一个stage,若果是窄依赖,继续递归查找父RDD的父RDD,递归的出口是直到找不到父RDD,最后把所有的RDD统一划分一个stage

举例
- WordCount的stage个数


本文深入探讨了Spark中DAG(有向无环图)的概念及其在任务调度中的作用,详细解析了如何根据RDD间的依赖关系,即宽依赖和窄依赖,来划分计算流程为多个Stage,以优化并行计算效率。
2101

被折叠的 条评论
为什么被折叠?



