Spark SQL Catalyst

Trees

TreeNode, Expression, LogicalPlan, PhysicalPlan

Transformations

Analyzer, Optimizer, Planner

Rules

RuleExecutor

Sequence

Query/Dataset/DataFrame(SessionCatalog) -(Antlr)> Unresolved/Parsed Logical Plan -(Analyser)> Analyzed Logical Plan -(Optimizer)> Optimized Logical Plan -(SparkPlanner)> Physical Plan -> SparkPlan#execute

  • 解析(Parse):将SQL语句通过Parse模块进行词法和语法解析,解析完成后生成未绑定的逻辑执行计划(Unresolved LogicalPlan),之后步骤在该逻辑执行计划上运用各种规则。

  • 绑定(Bind):使用Analyser中的Analysis规则(Rule),借助于元数据(Hive Metastore等),将未绑定的逻辑执行计划转换成绑定元数据的逻辑执行计划(LogicPlan)。

  • 优化(Optimizer):使用Optimization规则(Rule),将绑定的逻辑执行计划进行合并、列裁剪和过滤器下推等优化后生成优化后的逻辑执行计划(Optimized LogicPlan)。

  • 转换(Transform):使用Planner使用Planning Strategies,对优化后的逻辑执行计划转换(Transform)生成可执行的物理执行计划(PhysicalPlan)。

  • 执行(Execution):调用SparkPlan的execute执行计算RDD。