1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Hive SQL转化为MapReduce执行计划深度解析

Hive SQL转化为MapReduce执行计划深度解析

时间:2019-11-10 16:29:50

相关推荐

Hive SQL转化为MapReduce执行计划深度解析

目录

1. MapReduce实现基本SQL操作的原理

1.1 Join的实现原理

1.2 Group By的实现原理

1.3 Distinct的实现原理

2. SQL转化为MapReduce的过程

2.1 Phase1 SQL词法,语法解析

2.2Phase2 SQL基本组成单元QueryBlock

2.3 Phase3 逻辑操作符Operator和逻辑操作树Operator Tree

2.4 Phase4 逻辑层优化器

2.5 Phase5 OperatorTree生成MapReduce Job的过程

2.6 Phase6 物理层优化器

3. 待续

文章主体源于美团网技术陈纯大作,值得拥有。原文在美团技术团队中已被删除。梳理了其中一些关键内容。并添加了一些自己的理解。

其中一部分图来自Recruit Technologies的slice:Internal Hive,一些看不懂的可以去参考一下原文(日文)。

1. MapReduce实现基本SQL操作的原理

详细讲解SQL编译为MapReduce之前,我们先来看看MapReduce框架实现SQL基本操作的原理

1.1 Join的实现原理

select u.name, o.orderid from order o join user u on o.uid = u.uid;

在map的输出value中为不同表的数据打上tag标记,在reduce阶段根据tag判断数据来源。MapReduce的过程如下(这里只是说明最基本的Join的实现,还有其他的实现方式)

1.2 Group By的实现原理

select rank, isonline, count(*) from city group by rank, isonline;

将GroupBy的字段组合为map的输出key值,利用MapReduce的排序,在reduce阶段保存LastKey区分不同的key。MapReduce的过程如下(当然这里只是说明Reduce端的非Hash聚合过程)

1.3 Distinct的实现原理

select dealid, count(distinct uid) num from order group by dealid;

如果有多个distinct字段呢,如下面的SQL

select dealid, count(distinct uid), count(distinct date) fr

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。