一、前言
这一节主要介绍如何自定义扩展各阶段规则
虽然spark内部提供了很多优化规则,但在实际工作中,经常因为业务需求需要自定义扩展优化器或解析器,故自己实现一个优化器才对sparksql有更深的理解
二、扩展范围
spark在扩展方便做的很好,几乎所有阶段都开放了扩展点,用户可以自定义Parser/ResolutionRule/CheckRule/OptimizerRulesPlannerStrategy,如下图:
Spark用户可以在SQL处理的各个阶段扩展自定义实现,如下
injectOptimizerRule – 添加optimizer自定义规则,optimizer负责逻辑执行计划的优化,我们例子中就是扩展了逻辑优化规则。
injectParser – 添加parser自定义规则,parser负责SQL解析。
injectPlannerStrategy – 添加planner strategy自定义规则,planner负责物理执行计划的生成。
injectResolutionRule – 添加Analy