1. 术语解释
2. 窄依赖和宽依赖:
RDD之间有一系列的依赖关系,依赖关系又分为窄依赖和宽依赖。
窄依赖:
父RDD和子RDD partition之间的关系是一对一的。或者父RDD一个partition只对应一个子RDD的partition情况下的父RDD和子RDD partition关系是多对一的。不会有shuffle的产生。
宽依赖:
父RDD与子RDD partition之间的关系是一对多。会有shuffle的产生。
宽窄依赖图理解:
3. Stage
Spark任务会根据RDD之间的依赖关系,形成一个DAG有向无环图,DAG会提交给DAGScheduler,DAGScheduler会把DAG划分相互依赖的多个stage,划分stage的依据就是RDD之间的宽窄依赖。
遇到宽依赖就划分stage,每个stage包含一个或多个task任务。
然后将这些task以taskSet的形式提交给TaskScheduler运行。
stage是由一组并行的task组成。
stage切割规则:
切割规则:从后往前,遇到宽依赖就切割stage。