大数据入门基础系列之浅谈Hive的执行原理

在前面的博文里,我已经介绍了

在前面的博文里,我已经介绍了

Hive的执行原理

Hive的执行原理

Hive构建在Hadoop之上

(1) HQL中对查询语句的解释、优化、生成查询计划是由Hive完成的

(2) 所有的数据都是存储在Hadoop中

(3) 查询计划被转化为MapReduce任务,在Hadoop中执行(有些查询没有MR任务,如:select * from table)

(4) Hadoop和Hive都是用UTF-8编码的

Hive编译器将一个Hive QL转换操作符。操作符Operator是Hive的最小的处理单元,每个操作符代表HDFS的一个操作或者一道MapReduce作业。Operator都是hive定义的一个处理过程,其定义有:

protected List

protected List

protected boolean done; // 初始化值为false

所有的操作构成了Operator图,hive正是基于这些图关系来处理诸如limit, group by, join等操作。

Hive QL的操作符

操作符如下:

TableScanOperator:扫描hive表数据

ReduceSinkOperator:创建将发送到Reducer端的对

JoinOperator:Join两份数据

SelectOperator:选择输出列

FileSinkOperator:建立结果数据,输出至文件

FilterOperator:过滤输入数据

GroupByOperator:GroupBy语句

MapJoinOperator:/*+mapjoin(t) */

LimitOperator:Limit语句

UnionOperator:Union语句

Hive通过ExecMapper和ExecReducer执行MapReduce任务。在执行MapReduce时有两种模式,即本地模式和分布式模式 。

http://www.cnblogs.com/zlslch/http://www.cnblogs.com/lchzls/

看完本文有收获?请转发分享给更多人

关注「大数据躺过的坑」,提升大神技能

觉得不错,请点赞和留言

本文来自企鹅号 - 好记性不如烂笔头干货媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏祥子的故事

LeetCode | 两数之和

3276
来自专栏有趣的django

PYTHON面试

大部分的面试问题,有最近要找事的老铁吗?  python语法以及其他基础部分 可变与不可变类型;  浅拷贝与深拷贝的实现方式、区别;deepcopy如果你来...

4407
来自专栏王小雷

MapReduce的过程(2)

MapReduce的编程思想(1) MapReduce的过程(2) 1. MapReduce从输入到输出 一个MapReduce的作业经过了input、map、...

2195
来自专栏坚毅的PHP

redis学习笔记

摘录些nosqlfans上看的资源(http://blog.nosqlfan.com/html/3537.html),用了一年了,只会安装、启动和get set...

35710
来自专栏祝威廉

PySpark如何设置worker的python命令

因为最近在研究spark-deep-learning项目,所以重点补习了下之前PySpark相关的知识,跟着源码走了一遍。希望能够对本文的读者有所帮助。

652
来自专栏chenssy

【死磕Sharding-jdbc】---group by的SQL重写为limit Integer.MAX_VALUE的无奈

这篇文章源于【死磕Sharding-jdbc】-----重写的遗留问题,相关sharding-jdbc源码如下:

683
来自专栏Spark生态圈

[Spark SQL] 主要执行流程

SparkSql的第一件事就是把SQLText解析成语法树,这棵树包含了很多节点对象,节点可以有特定的数据类型,同时可以有0个或者多个子节点,节点在SparkS...

871
来自专栏技术碎碎念

页面调度算法模拟

模拟实现的算法:FIFO,Optimal(最佳置换),LRU,Clock,改进的Clock算法 一、先入先出(FIFO): 最简单的页面置换算法是先入先出(FI...

3366
来自专栏小樱的经验随笔

凯撒密码加解密及破解实现原理

概念及原理 根据百度百科上的解释,凯撒密码是一种古老的加密算法。 密码的使用最早可以追溯到古罗马时期,《高卢战记》有描述恺撒曾经使用密码来传递信息,即所谓的“恺...

2996
来自专栏知识分享

关于原子哥ENC28J60网络通信模块接收数据代码的一点疑惑

---恢复内容开始--- 这几天做STM32的ENC28J60网络通信模块,自己在原子哥的代码上进行修改测试,,发现一个问题,电脑和板子进行通信的时候总隔一段时...

3428

扫码关注云+社区