Spark-源码学习-SparkSQL-架构设计-SQL 引擎-Analyzer 模块-Rule-Substitution-CTESubstitution
一、概述
CTESubstitution 规则是用来处理 With 语句。 在遍历逻辑算子树的过程中,当匹配到 With(child, relations)
节点时,将子 LogicalPlan 替换成解析后的 CTE,由于 CTE 的存在,SparkSqlParser 对 SQL 语句从左向右解析后会产生多个 LogicalPlan。
二、实现
Catalyst 实现了完善的表达式体系,与各种算子(QueryPlan)占据同样的地位。算子执行前通常都会进行”绑定”操作,将表达式与输入的属性对应起来,同时算子也能够调用各种表达式处理相应的逻辑。
在 Expression 类中,主要定义了5个方面的操作,包括基本属性、核心操作、输入输出、字符串表示和等价性判断
核心操作 eval 函数实现了表达式对应的处理逻辑,也是其他模块调用该表达式的主要接口,而 genCode 和 doGenCode 用于生成表达式对应的 Java 代码。字符串表示用于查看该 Expression 的具体内容,如表达式名和输入参数等。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joker!
评论
ValineTwikoo