Stage的划分

介绍

Stage是Spark独有的概念,是对RDD进行范围描述的东西。

原理

Stage划分是从最终结果RDD从后往前,通过递归来划分stage,循环到最后会把所有rdd划分为一个Stage(可以结合Stage的源码来理解这句话)

为什么要根据宽窄依赖划分Stage?

在此之前一定要先理解宽依赖和窄依赖的概念:宽依赖和窄依赖

Stage的划分
每个宽依赖的处理均会是一个stage的划分点。可以这么简单的理解:

宽依赖一般都是groupbyKey这类action算子,所以此时要进行shuffle等操作;

窄依赖一般都是rdd转换不需要shuffle;

工作内容不一样,所以把窄依赖的rdd划分一个stage,宽依赖的rdd依赖关系作为划分stage的依据。每个宽依赖的处理均会是一个stage的划分点。可以这么简单的理解:

宽依赖一般都是groupbyKey这类action算子,所以此时要进行shuffle等操作;

窄依赖一般都是rdd转换不需要shuffle;

工作内容不一样,所以把窄依赖的rdd划分一个stage,宽依赖的rdd依赖关系作为划分stage的依据。