当前位置:网站首页>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任务进行优化,生成最终执行任务
边栏推荐
- 算法---一和零(Kotlin)
- mutillidae download and installation
- 密码学系列之:PEM和PKCS7,PKCS8,PKCS12
- 使用二维码解决固定资产管理的难题
- The role of DataContext in WPF
- 【cesium】元素高亮显示
- upload上传图片到腾讯云,如何上传图片
- 【无标题】
- Flutter TapGestureRecognizer 如何工作
- In the hot summer, teach you to use Xiaomi smart home accessories + Raspberry Pi 4 to connect to Apple HomeKit
猜你喜欢
u-boot debugging and positioning means
Day019 方法重写与相关类的介绍
Qt produces 18 frames of Cupid to express his love, is it your Cupid!!!
WPF中DataContext作用
Error creating bean with name ‘configDataContextRefresher‘ defined in class path resource
请写出SparkSQL语句
开发一套高容错分布式系统
MySQL基础(一)---基础认知及操作
Qt制作18帧丘比特表白意中人、是你的丘比特嘛!!!
shell函数
随机推荐
多线程查询结果,添加List集合
雷克萨斯lm的安全性到底体现在哪里?一起来看看吧
Day14 jenkins deployment
2022 The 4th C.Easy Counting Problem (EGF+NTT)
ESP32 485光照度
Flutter真机运行及模拟器运行
Returned object not currently part of this pool
延迟加载js方式async与defer区别
UVA10827
Flutter 父子组件如何都能收到点击事件
【学习笔记之菜Dog学C】动态内存管理之经典笔试题
entry point injection
C语言-大白话理解原码,反码和补码
dedecms织梦tag标签不支持大写字母修复
"Recursion" recursion concept and typical examples
请写出SparkSQL语句
判断语句_switch与case
Flutter learning - the beginning
Reverse theory knowledge 4
LeetCode:1403. 非递增顺序的最小子序列【贪心】