Spark SQL 查询引擎Catalyst分析
Catalyst整体架构图
Catalyst执行流程
catalyst是spark sql的调度核心,遵循传统数据库查询解析步骤,对sql进行解析,转换为逻辑查询计划,物理查询计划,最终转化为Spark的DAG后在执行,下图为Catalyst的执行流程。
- SqlParser将SQL语句被解析为语法树(AST),也就是未解析的逻辑查询计划。Parser简单来说是将SQL字符串切分成一个一个Token,再根据一定语义规则解析为一棵语法树。(ANTLR实现)
- Analyzer对逻辑查询计划进行属性和关系关联检验,也就是通过定义的一系列规则将未解析的逻辑查询计划借助catalog去解析,如将之前提到的未解析的逻辑查询计划转换成逻辑查询计划。(再次遍历整个语法树,对树上的每个节点进行数据类型绑定以及函数绑定)
- Optimizer通过逻辑查询优化将逻辑查询计划转化为优化的逻辑查询计划,优化器是整个Catalyst的核心。下面一篇文章会详细介绍。包括谓词下推(Predicate Pushdown)、常量累加(Constant Folding)和列值裁剪(Column Pruning)。
- Quer