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 之间是并发执行的