hive代码研究--运行原理(1)- 整体框架
2011-10-30 17:38
295 查看
hive就是一个将sql语句转化为MR工具
hive的工作原理:
1、使用antlr定义sql语法,(详细见hive.g),由antlr工具将hive.g编译为两个java文件:HiveLexer.java HiveParser.java,可以将输入的sql解析为ast树
2、org.apache.hadoop.hive.ql.Driver对ast树进行初步的解析(combile),调用相应的语法分析器进行分析处理(包括DDl,Explain,Load等,其中最重要的是:SemanticAnalyzer)
3、SemanticAnalyzer的主要分析过程:调用analyzeInternal函数
1)doPhase1过程:主要是将sql语句中涉及到的各种信息存储起来,存到QB中去,供后续调用
2)getMetaData:这个过程主要是获取元数据信息,主要是sql中涉及到的表到元数据的关联
3)genPlan:这是最重要的过程之一,主要是生成算子树(operator tree)
4)optimize:优化,对算子树进行一些优化操作,例如列剪枝等
5)genMapRedTasks:这个步骤是最关键的步骤,将算子树通过一定的规则生成若干相互以来的MR任务
4、Driver编译完成以后,开始进入执行阶段(execute),执行过程按照任务树从roottask开始依次执行,直至结束。
hive的工作原理:
1、使用antlr定义sql语法,(详细见hive.g),由antlr工具将hive.g编译为两个java文件:HiveLexer.java HiveParser.java,可以将输入的sql解析为ast树
2、org.apache.hadoop.hive.ql.Driver对ast树进行初步的解析(combile),调用相应的语法分析器进行分析处理(包括DDl,Explain,Load等,其中最重要的是:SemanticAnalyzer)
3、SemanticAnalyzer的主要分析过程:调用analyzeInternal函数
1)doPhase1过程:主要是将sql语句中涉及到的各种信息存储起来,存到QB中去,供后续调用
2)getMetaData:这个过程主要是获取元数据信息,主要是sql中涉及到的表到元数据的关联
3)genPlan:这是最重要的过程之一,主要是生成算子树(operator tree)
4)optimize:优化,对算子树进行一些优化操作,例如列剪枝等
5)genMapRedTasks:这个步骤是最关键的步骤,将算子树通过一定的规则生成若干相互以来的MR任务
4、Driver编译完成以后,开始进入执行阶段(execute),执行过程按照任务树从roottask开始依次执行,直至结束。
相关文章推荐
- hive代码研究--运行原理(2)- genplan过程
- Apache Cordova-Android框架原理研究笔记 II
- MyBatis框架原理2:SqlSession运行过程
- cocos2d-x整体框架源码分析以及启动过程原理(win32)
- Apache Cordova-Android框架原理研究笔记 I
- Java基础知识强化之集合框架笔记47:Set集合之TreeSet保证元素唯一性和比较器排序的原理及代码实现(比较器排序)
- ArcGIS Server Ajax 框架分析及运行原理
- C++运行原理的汇编代码分析 一
- Javascript 链式运动框架——逐行分析代码,让你轻松了解运动的原理
- Asp.net WebPages框架运行原理浅析(转)
- Tomcat研究 -- 整体框架
- 框架原理第三讲,RTTCreate,运行时类型创建.(以MFC框架讲解)
- SSH三大框架的运行原理及机制
- iOS框架研究之SDWebImage的原理以及使用流程
- Apache Cordova-Android框架原理研究笔记 II
- 深入研究Netty框架之ByteBuf功能原理及源码分析
- android-linux系统调用原理之整体系统框架实现原理之OPEN实现
- Javascript 完美运动框架——逐行分析代码,让你轻松了解运动的原理
- Scrapy研究探索(三)——Scrapy核心架构与代码运行分析
- Apache Cordova-Android框架原理研究笔记