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

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

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

2021SC@SDUSC

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

文章目录
  • 山大软工实践hive(13)-查看逻辑优化在总体流程上的位置
    • 在SemanticAnalyzer里
    • 找到Driver
    • 结语

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算法的数据结构博客22数据结构的详细原理博客3-43一些优化涉及的思想原理博客5-64逻辑优化的大体流程博客5后半部分5详细的调用细节博客7-116逻辑优化过程的结构分析博客127逻辑优化在总体流程上的位置博客13

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5679453.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存