山大软工实践hive(13)-查看逻辑优化在总体流程上的位置

2021SC@SDUSC

山大软工实践hive(13)-查看逻辑优化在总体流程上的位置


Optimizer进行优化时是调用的optimize()方法,这次通过这个去看该方法在整体流程上的位置
另外提一下,网上搜的生成任务过程中,数据结构生成的流程是 HQL->AST->QB->OP Tree->OP Tree(逻辑优化后)->Task Tree->Task Tree

在SemanticAnalyzer里

查找optimize()方法的调用,在SemanticAnalyzer里在这里插入图片描述
12292-12295行展示了逻辑优化的流程–创建Optimizer对象,设置pctx,进行initialize方法(产生优化器的list),然后调用optimize()方法

这个方法最上面,可以看到AST Tree与QueryBlock已经生成
在这里插入图片描述
向下,看到了pctx 的初始化
在这里插入图片描述

再向下,可以看到有两个优化器(也可以称为转化器,毕竟都继承的transform类)满足条件会直接先进行优化
在这里插入图片描述

接着可以看到对QueryBlock的调用
在这里插入图片描述再向下就是逻辑优化
在这里插入图片描述

就在这之后,逻辑优化结束
在这里插入图片描述

接着向下,越过我进入此方法的地方,看到了QueryPlan与Task,根据我最初看的流程图,这一部分应该是物理优化部分,涉及到TaskTree
在这里插入图片描述

找到Driver

这个方法看完,然后去看它在哪里被调用
先在这个类下找到一个调用
在这里插入图片描述
再找调用,到BaseSemanticAnalyzer类
在这里插入图片描述

再找调用,去Driver里看看
在这里插入图片描述
在compile方法里
在这里插入图片描述
问了负责第一部分的同学,他说这个方法就是他涉及的内容。command就是输入的字符串

他涉及的部分到生成AST Tree结束,也就是这里
在这里插入图片描述
后面就是这个,包含了QB,OP Tree, Task Tree的处理
在这里插入图片描述
至此确定了逻辑优化在总体流程上的位置

结语

这13篇博客按顺序接触了下面部分

序号做了什么对应博客
1算法的数据结构博客2
2数据结构的详细原理博客3-4
3一些优化涉及的思想原理博客5-6
4逻辑优化的大体流程博客5后半部分
5详细的调用细节博客7-11
6逻辑优化过程的结构分析博客12
7逻辑优化在总体流程上的位置博客13

描述地不一定准确,但是这部分该看的已经看过了
如果还有下一篇,那估计就是随便看看其他的,或者是结语Plus版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值