当前位置:网站首页>HQL语句执行过程
HQL语句执行过程
2022-08-05 05:12:00 【价值成长】
HQL语句执行过程:
- 语法解析:Antlr 定义 SQL 的语法规则,完成 SQL 词法,语法解析,将 SQL 转化为抽象 语法树 AST Tree;
- 语义解析:遍历 AST Tree,抽象出查询的基本组成单元 QueryBlock;
- 生成逻辑执行计划:遍历 QueryBlock,翻译为执行操作树 OperatorTree;
- 优化逻辑执行计划:逻辑层优化器进行 OperatorTree 变换,合并不必要的 ReduceSinkOperator,减少 shuffle 数据量;
- 生成物理执行计划:遍历 OperatorTree,翻译为 MapReduce 任务;
- 优化物理执行计划:物理层优化器进行 MapReduce 任务的变换,生成最终的执行计划。
HQL是怎样解析成MR job的?
Hive使用Antlr实现语法解析.根据Antlr制定的SQL语法解析规则,完成SQL语句的词法/语法解析,将SQL转为抽象语法树AST.
遍历AST,生成基本查询单元QueryBlock.QueryBlock是一条SQL最基本的组成单元,包括三个部分:输入源,计算过程,输出.
遍历QueryBlock,生成OperatorTree.Hive最终生成的MapReduce任务,Map阶段和Reduce阶段均由OperatorTree组成。Operator就是在Map阶段或者Reduce阶段完成单一特定的操作。QueryBlock生成Operator Tree就是遍历上一个过程中生成的QB和QBParseInfo对象的保存语法的属性.
**优化OperatorTree.**大部分逻辑层优化器通过变换OperatorTree,合并操作符,达到减少MapReduce Job,减少shuffle数据量的目的
OperatorTree生成MapReduce Job.遍历OperatorTree,翻译成MR任务.
- 对输出表生成MoveTask
- 从OperatorTree的其中一个根节点向下深度优先遍历
- ReduceSinkOperator标示Map/Reduce的界限,多个Job间的界限
- 遍历其他根节点,遇过碰到JoinOperator合并MapReduceTask
- 生成StatTask更新元数据
- 剪断Map与Reduce间的Operator的关系
优化任务. 使用物理优化器对MR任务进行优化,生成最终执行任务
边栏推荐
- Flutter学习2-dart学习
- u-boot调试定位手段
- [Software Exam System Architect] Software Architecture Design ③ Domain-Specific Software Architecture (DSSA)
- How can Flutter parent and child components receive click events
- How does the Flutter TapGestureRecognizer work
- 【cesium】元素高亮显示
- Returned object not currently part of this pool
- Flutter learning three-Flutter basic structure and principle
- software management rpm
- Analysis of Mvi Architecture
猜你喜欢

jvm 三 之堆与栈

RL reinforcement learning summary (1)

基于Web的商城后台管理系统的设计与实现

ESP32 485光照度

Difference between for..in and for..of

RL强化学习总结(一)

Error creating bean with name 'configDataContextRefresher' defined in class path resource

Detailed explanation of each module of ansible

Flutter learning 2-dart learning

请写出SparkSQL语句
随机推荐
phone call function
Develop a highly fault-tolerant distributed system
作业8.4 进程间的通信 管道与信号
How can Flutter parent and child components receive click events
span标签和p标签的区别
jvm 三 之堆与栈
判断语句_switch与case
结构光三维重建(二)线结构光三维重建
Algorithms - ones and zeros (Kotlin)
C language - vernacular to understand the original code, inverse code and complement code
二叉树基本性质+oj题解析
Flutter learning three-Flutter basic structure and principle
The mall background management system based on Web design and implementation
1.3 mysql批量插入数据
WPF中DataContext作用
数字_获取指定位数的小数
多线程查询结果,添加List集合
What field type of MySQL database table has the largest storage length?
MySQL Foundation (1) - Basic Cognition and Operation
How to deal with DNS hijacking?