前几篇文章介绍了SparkSQL的Catalyst的核心运行流程、SqlParser,和Analyzer以及核心类库TreeNode,本文将详细讲解SparkSQL的Optimizer的优化思想以及Optimizer在Catalyst里的表现方式,并加上自己的实践,对Optimizer有一个直观的认识。Optimizer的主要职责是将Analyzer给Resolved的LogicalPlan根据不同的优化策略Batch,来对语法树进行优化,优化逻辑计划节点(LogicalPlan)以及表达式(Expression),也是转换成物理执行计划的前置。如下图:Optimizer这个类是在cataly