当前位置:   article > 正文

Spark:Stage介绍_spark stage

spark stage

spark job是根据action算子触发的,遇到action算子就会起一个job

stage的划分依据就是看是否产生了shuflle(即宽依赖),遇到一个shuffle操作就划分为前后两 个stage

stage是由一组并行的task组成,stage会将一批task用TaskSet来封装,提交给TaskScheduler进行分配,最后发送到Executor执行

下面来看一张图来具体分析一下
在这里插入图片描述

为什么是从后往前呢?
因为RDD之间是有血缘关系的,后面的RDD依赖前面的RDD,也就是说后面的RDD要等前面的RDD执行完才会执行。 所以从后往前遇到宽依赖就划分为两个stage,shuffle前一个,shuffle后一个。如果整个过程没有产生shuffle那就只会有一个stage

看这个图
RDD G 往前推,到RDD B的时候,是窄依赖,所以不切分Stage,
再往前到RDD A,此时产生了宽依赖, 所以RDD A属于一个Stage、RDD B 和 G属于一个Stage

再看下面,RDD G到RDD F,产生了宽依赖,所以RDD F属于一个Stage,因为RDD F和 RDD C、D、E这 几个RDD没有产生宽依赖,都是窄依赖,所以他们属于一个Stage。

所以这个图中,RDD A 单独一个stage1, RDD C、D、E、F被划分在stage2中, 最后RDD B和RDD G划分在了stage3 里面

注意: Stage划分是从后往前划分,但是stage执行时从前往后的,这就是为什么后面先切割的 stage为什么编号是3

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号