本期内容:
1. SparkPlanner的基本工作机制
2. Physical Plan源码彻底详解
Physical Plan也是Catalyst变成Spark作业的最后一个阶段。
生成SparkPlan
从代码,我们可以看到SparkPlan的生成包含了两个步骤,首先会调用SparkPlanner的plan方法,生成SparkPlan,调用prepareForExecution的execute方法,再进行一次加工。
SparkPlanner继承自SparkStrategies,strategies是精髓。
其执行在下面的plan方法,所有的strategies应用在plan上得到的physicalPlan,这个方法返回一个Iterator。
修正SparkPlan
而在prepareForExecution中,我们看到只是定了两个规则,主要是执行计划进行修正。
其中EnsureRequirements主要针对shuffle操作,确保前后的plan分区数兼容。
执行SparkPlan
这些操作都是逻辑级别的,sparkplan最终都是调用execute方法生成RDD。