栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

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

山大软工实践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算法的数据结构博客2
2数据结构的详细原理博客3-4
3一些优化涉及的思想原理博客5-6
4逻辑优化的大体流程博客5后半部分
5详细的调用细节博客7-11
6逻辑优化过程的结构分析博客12
7逻辑优化在总体流程上的位置博客13

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/674243.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号