Spark SQL 查询引擎Catalyst分析

Spark SQL 查询引擎Catalyst分析

    • Catalyst整体架构图
    • Catalyst执行流程

Catalyst整体架构图

Spark SQL 查询引擎Catalyst分析_第1张图片

Catalyst执行流程

catalyst是spark sql的调度核心,遵循传统数据库查询解析步骤,对sql进行解析,转换为逻辑查询计划,物理查询计划,最终转化为Spark的DAG后在执行,下图为Catalyst的执行流程。
Spark SQL 查询引擎Catalyst分析_第2张图片

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

你可能感兴趣的:(spark)