48:Spark中的新解析引擎Catalyst源码Analyzer彻底详解
来源:互联网 发布:图片无限放大软件 编辑:程序博客网 时间:2024/06/05 18:33
本期内容:
1. Analyzer的基本工作机制
2. Analyzer源码彻底详解
在sql语句的处理流程中,analyzer是在sqlparse的基础上,把unresolved logical plan生成logcal plan。
Analyzer定义
在analyzer构造的时候,会传入catalog和functionRegistry,其中catelog用来存放用户指定的表名等信息,functionRegistry存放自定义函数,主要用来将未解析的属性和关系进行转换。
在构造方法中,除了catalog和functionRegistry,还有一个迭代次数,因为在分析时需要不断进行遍历。
通过迭代次数这个参数,我们可以定义一些策略,包括Once和FixedPoint,FixedPoint会根据参数控制迭代次数的上限。
batchs是整个analyzer的核心,里面会定义一系列的rules,这些rules会采取的特定的策略。通过这些规则,会把unresovled变成resovled。
Analyzer指定
RuleExecutor中的execute是执行的入口。
在执行时,我们发现,各个规则之间是串行运行的,首先是对batchs进行循环,再对每个batch中rule进行处理。
标红的这句代码是整个过程的关键,是实际的执行过程,对调用各个Rule中的apply方法。
以一个具体的Rule来看的话,这里会使用到模式匹配,调用resolveOperators方法对plan中的内容进行解析。
resolveOperators会循环遍历各个节点,应用解析规则。
相比于SqlParser,analyzer整个流程更简洁一些,主要就是用rules,采用模式匹配进行处理,在这里还是想再感叹下Scala强大的语法能力。
0 0
- 第48课:Spark中的新解析引擎Catalyst源码Analyzer彻底详解
- 48:Spark中的新解析引擎Catalyst源码Analyzer彻底详解
- 第47课:spark中的新解析引擎catalyst源码sqlparser彻底详解
- 第49课:Spark中的新解析引擎Catalyst源码Optimizer彻底详解.
- 47:Spark中的新解析引擎Catalyst源码SqlParser彻底详解
- 49:Spark中的新解析引擎Catalyst源码Optimizer彻底详解
- 50:Spark中的新解析引擎Catalyst源码Physical Plan彻底详解
- 第46课:Spark中的新解析引擎Catalyst源码初探 SQLContext、Catalog、SqlParser 、analyzer、optimizer、QueryExecution、RDD
- 46:Spark中的新解析引擎Catalyst源码初探
- 第50课:spark的新解析引擎catalyst源代码physical plan彻底详解
- 52:Spark中的新解析引擎Catalyst源码中的外部数据源、缓存及其它
- 第46课:Spark中的新解析引擎Catalyst源码初探
- 第52课:spark的新解析引擎catalyst源码中的外部数据源、缓存及其他
- 51:Spark中的新解析引擎Catalyst源码SQL最终转化为RDD具体实现
- 第46课:Spark中的新解析引擎Catalyst源码初探
- 45:神速理解Spark中的新解析引擎Catalyst
- 第51课:Spark中的新解析引擎Catalyst源码SQL最终转化为RDD具体实现
- 第51课: Spark中的新解析引擎Catalyst源码SQL最终转化为RDD具体实现
- HDU 4292 Food 网络流建图
- HDU 3389 Game (阶梯博弈、找规律)*
- 47:Spark中的新解析引擎Catalyst源码SqlParser彻底详解
- 弹窗组件
- 简单的 TouchID demo 的使用 && UIlaterView block的封装。希望看完的你 举一反三, UIAlertController添加一样的block回调
- 48:Spark中的新解析引擎Catalyst源码Analyzer彻底详解
- C语言指针杂谈
- light oj 1258 - Making Huge Palindromes (Manacher 变形)
- 49:Spark中的新解析引擎Catalyst源码Optimizer彻底详解
- PHP数组排序归纳总结
- 删除项目中的.svn或者cvs文件夹
- Git-分布式版本管理系统
- 50:Spark中的新解析引擎Catalyst源码Physical Plan彻底详解
- 51:Spark中的新解析引擎Catalyst源码SQL最终转化为RDD具体实现