Spark RDD -> Stage Task

2023-07-21 12:01:01 浏览数 (2)

Spark 学习初期

RDD分为两种: Transformation 转换算子, Action 动作算子

Transformation: 在现有的数据集上创建一个新的数据集. Map, Filter, filter

Action: 在数据集计算完成后,返回给Driver,即需要数据重组织 Reduce , Union , Sort, Group By

宽依赖结果返回给Driver来处理,执行下一个Stage

原始得RDDs,通过一系列得转换行程了DAG

即当前RDD是由哪些Parent RDD(s)转换而来, 以及它的parent RDD(s)有哪些partitions ,DAG可以认为RDD之间有了血缘关系(Lineage)

根据依赖关系,将DAG划分为不同得Stage.

对于窄依赖, 由于Partition依赖关系的确定性, Partition的转换处理就可以来同一个线程内完成,所以窄依赖被Spark划分到同一个Stage内执行;

对于宽依赖,由于Shuffle的存在,只能在partition RDD(s) Shuffle处理完成之后,才能开始接下来的计算,所以宽依赖就是Spark划分Stage的依据,(Spark根据宽依赖将DAG划分为不同的Stage)

在一个Stage内部,每个Partitition都会被分配一个Task, Task之间支并行执行的.

Stage 之间根据依赖关系就变成了一个大力度的DAG,这个DAG的执行顺序也是从前向后的.

Stage只有在它没有Parent Stage或者parenet Stage都已经执行完成后,才可以执行

传统数据库,即按照Action 算子来切换PlanFragement

PlanFragment内部,按照并发切分PlanFragement Instance, PlanFragement Instance 之间是并发执行的

0 人点赞