企业级大数据之Hive原理

于2017-03-13由小牛君创建

分享到:


第一部分: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语句 
----
分享学院-专注企业级大数据技术分享和提升。
资料下载:http://www.keshare.com
--------
?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