Hive原理
来源:互联网 发布:南京行知基地卫生间 编辑:程序博客网 时间:2024/05/23 11:52
转载:http://sishuok.com/forum/blogPost/list/6220.html
第一部分: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
阅读全文
0 0
- Hive原理
- Hive原理
- Hive原理
- Hive原理
- hive原理
- Hive原理
- Hive学习1:Hive原理
- hive join原理
- Hive原理与不足
- Hive原理与不足
- hive原理学习
- Hive 工作原理
- Hive的原理
- hive join原理
- Hive原理与不足
- spark on hive原理
- Hive原理--体系结构
- Hive运行原理
- 一些编程的规范
- Python练习12----lambda
- Linux:如何使用gdb调试多进程多线程程序
- (vue.js)vue-cli构建,scss文件引入本地css意外报错
- Keyboard Row
- Hive原理
- Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
- IT专业英语整理积累(1)
- Android Studio在创建项目是一直处于building “project name”gradle project info的解决办法
- CSS、JS中的相对路径引用
- KMP算法
- PHP面试总结-2
- 欧拉公式的推导
- AS意外死机后,全屏红线