Stage的划分
介绍
Stage是Spark独有的概念,是对RDD进行范围描述的东西。
原理
Stage划分是从最终结果RDD从后往前,通过递归来划分stage,循环到最后会把所有rdd划分为一个Stage(可以结合Stage的源码来理解这句话)
为什么要根据宽窄依赖划分Stage?
在此之前一定要先理解宽依赖和窄依赖的概念:宽依赖和窄依赖
每个宽依赖的处理均会是一个stage的划分点。可以这么简单的理解:
宽依赖一般都是groupbyKey这类action算子,所以此时要进行shuffle等操作;
窄依赖一般都是rdd转换不需要shuffle;
工作内容不一样,所以把窄依赖的rdd划分一个stage,宽依赖的rdd依赖关系作为划分stage的依据。每个宽依赖的处理均会是一个stage的划分点。可以这么简单的理解:
宽依赖一般都是groupbyKey这类action算子,所以此时要进行shuffle等操作;
窄依赖一般都是rdd转换不需要shuffle;
工作内容不一样,所以把窄依赖的rdd划分一个stage,宽依赖的rdd依赖关系作为划分stage的依据。