博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转载)Hive学习笔记--Hive 原理
阅读量:6633 次
发布时间:2019-06-25

本文共 1649 字,大约阅读时间需要 5 分钟。

hot3.png

第一部分:Hive原理
为什么要学习Hive的原理
•一条Hive HQL将转换为多少道MR作业
•怎么样加快Hive的执行速度
•编写Hive HQL的时候我们可以做什么
•Hive 怎么将HQL转换为MR作业
•Hive会采用什么样的优化方式
Hive架构&执行流程
 
Hive执行流程
•编译器将一个Hive QL转换操作符
•操作符是Hive的最小的处理单元
•每个操作符代表HDFS的一个操作或者一道MapReduce作业
Operator
•Operator都是hive定义的一个处理过程
•Operator都定义有:
•protected List 
<Operator<?  
extends Serializable 
>> childOperators; 
•protected List 
<Operator<?  
extends Serializable 
>> parentOperators; 
•protected boolean done; // 初始化值为false
•所有的操作构成了 Operator图,hive正是基于这些图关系来处理诸如limit, group by, join等操作
 
Hive执行流程
操作符
描述
TableScanOperator
扫描hive表数据
ReduceSinkOperator
创建将发送到Reducer端的<Key,Value>对
JoinOperator
Join两份数据
SelectOperator
选择输出列
FileSinkOperator
建立结果数据,输出至文件
FilterOperator
过滤输入数据
GroupByOperator
GroupBy语句
MapJoinOperator
/*+mapjoin(t) */
LimitOperator
Limit语句
UnionOperator
Union语句
•Hive通过ExecMapper和ExecReducer执行MapReduce任务
•在执行MapReduce时有两种模式
•本地模式
•分布式模式
ANTLR词法语法分析工具
•ANTLR—Another Tool for Language Recognition
•ANTLR 是开源的
•为包括Java,C++,C#在内的语言提供了一个通过语法描述来自动构造自定义语言的识别器(recognizer),编译器(parser)和解释器(translator)的框架
•Hibernate就是使用了该分析工具
 
Hive编译器
 
 
 
 
编译流程
 
第二部分:一条HQL引发的思考
案例HQL
•select key from test_limit 
limit 1
•Stage-1
•TableScan Operator>Select Operator-> Limit->File Output Operator
•Stage-0
•Fetch Operator
•读取文件
Mapper与InputFormat
•该hive MR作业中指定的mapper是:
•mapred.mapper.class = org.apache.hadoop.hive.ql.exec.ExecMapper
•input format是:
•hive.input.format  = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat 
•该hive MR作业中指定的mapper是:
•mapred.mapper.class = org.apache.hadoop.hive.ql.exec.ExecMapper
•input format是:
•hive.input.format  = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat 

转载于:https://my.oschina.net/breakjoa/blog/151118

你可能感兴趣的文章
多版本python下,安装pip
查看>>
AndroidManifest.xml文件解析
查看>>
【我的V日志】2010年1月29日星期五
查看>>
我的友情链接
查看>>
六种微服务架构的设计模式
查看>>
路由器配置大全
查看>>
备份单表数据
查看>>
Java豆瓣电影爬虫——抓取电影详情和电影短评数据
查看>>
ajax
查看>>
c语言插入排序
查看>>
052 自动将每日的日志增量导入到hive中
查看>>
Android NDK开发(五)--C代码回调Java代码【转】
查看>>
Linux systemd 打开调试终端、添加开机自运行程序
查看>>
教你一招:根据身份证号计算出生年月和年龄 text函数和mid函数混用 datedif函数和today函数混用...
查看>>
将用户信息保存到Cookie中
查看>>
struts 官方网址
查看>>
LCA近期公共祖先
查看>>
Quartz快速上手
查看>>
CentOS6.5安装Kibana5.3.0
查看>>
SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
查看>>