版权声明:版权声明中 https://blog.csdn.net/lds_include/article/details/89254158
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个数