
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
在前面的博文里,我已经介绍了
原创 | 大数据入门基础系列之浅谈Hive和HBase的区别
原创 | 大数据入门基础系列之详谈Hive的数据定义语言(DDL)
原创 | 大数据入门基础系列之详谈Hive的数据操作语言(DML)
原创 | 大数据躺过的坑内部收徒201801期(目前仅面向在校学生)(少量名额)
原创 | 大数据入门基础系列之Hive的驱动器(包括解释器、编译器、优化器、执行器)
原创 | 大数据入门基础系列之Hive驱动器Driver之解释器Parser
原创 | 大数据入门基础系列之Hive驱动器Driver之编译器Compiler
可以看得出,对于Hive的Driver其实是有3种途径的。
即(1)CLI (2)JDBC/ODBC (3)Web GUI
对于
Hive源码分析:CLI入口类
推荐博文
http://blog.javachen.com/2013/08/21/hive-CliDriver.html

无论使用CLI、Thrift Server、JDBC还是自定义的提交工具,最终的HQL都会传给Driver实例,执行Driver.run()方法。从这种设计也可以看出,如果您要开发一套自定义的Hive作业提交工具,最好的方式是引用Driver实例,调用相关方法进行开发。
而Driver.run()方法,获得了这样一个HQL,则会执行两个重要的步骤:编译和执行,即Driver.complie()和Driver.execute()。
对于Driver.comile()来说,其实就是调用parse和optimizer包中的相关模块,执行语法解析、语义分析、优化(回想一下大学时的编译原理,编译的过程是不是语法分析、语法解析、语义分析);
对于Driver.run()来说,其实就是调用exec包中的相关模块,将解析后的执行计划执行,如果解析后的结果是一个查询计划,那么通常的作法就是提交一系列的MapReduce作业。
对于
Hive Driver源码执行流程分析
推荐博文
https://segmentfault.com/a/1190000002774731
hive其实做的就是解析一条sql然后形成到mapreduce任务,就是一个代码解释器。hive源代码本身就可以分为ql/metasotre/service/serde 这几块;其中
对于Hive来说,ql是整个Hive最最核心的一个模块,Hive主要的功能都集中在这样一个模块中,即org.apache.hadoop.hive.ql.*,其中最重要的几个模块:
parser:语法解析器和语义分析器,将SQL转化为执行计划。
optimizer:优化器,包括执行计划Operator图的改写(逻辑优化)和Task图的改写(物理优化)。
exec:执行器,作业提交和执行相关。
udf:Hive内置的用户自定义函数,包括操作符加、减、乘、除、与、或、非,常用数学操作(sin、cos等)、字符串操作(substr、instr)、聚合操作(count、sum、avg等)等。
以查询的执行为例,整个Hive的流程是非常简单的一条直线,由上到下进行。

本博文的重心是Hive驱动器之优化器
优化器:对逻辑执行计划进行优化。
优化器:优化HQL的组件。
优化器(optimizer):通过逻辑策略构造多途径并以不同方式重写。
优化器optimizer的功能如下:
(1)将多 multiple join 合并为一个 multi-way join;
(2)对join、group-by 和自定义的 map-reduce 操作重新进行划分;
(3)消减不必要的列;
(4)在表扫描操作中推行使用断言(predicate);
(5)对于已分区的表,消减不必要的分区;
(6)在抽样(sampling)查询中,消减不必要的桶。此外,优化器还能增加局部聚合操作用于处理大分组聚合(grouped aggregations)和 增加再分区操作用于处理不对称(skew)的分组聚合。
下一篇是
见明天的
原创 | 大数据入门基础系列之Hive驱动器Driver之执行器executer

同时,大可以关注我的个人博客:
http://www.cnblogs.com/zlslch/ 和 http://www.cnblogs.com/lchzls/
http://www.cnblogs.com/sunnyDream/
以及对应本平台的QQ群:161156071(大数据躺过的坑)


本文版权归(大数据躺过的坑)作者和微信公众平台共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。 如果您认为这篇文章还不错或者有所收获,您可以通过下边的“打赏”功能 打赏我一杯咖啡【物质支持】,也可以点击右下角的【点赞】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力!
看完本文有收获?请转发分享给更多人
关注「大数据躺过的坑」,提升大神技能
觉得不错,请点赞和留言↓↓↓




