HiveSQL的编译过程

MR实现HiveSQL的原理:

1.join

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

这是一条简单的关联sql查询,底层执行引擎是怎样实现的?
这里写图片描述
两张边作为输入,join的条件作为key,然后为其他值打上tag标记,经过shuffle,将key相同的数据发送到同一个Reduce上执行。

2.group by

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

这里写图片描述

在Map端将GroupBy的字段组合为key值(图中是rank和isonline),经过shuffle阶段,将相同的key发送到一个Reduce执行。

3.Distinct

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

这里写图片描述
当只有一个distinct字段时,如果不考虑Map阶段的Hash GroupBy,只需要将GroupBy字段和Distinct字段组合为map输出key,利用mapreduce的排序,同时将GroupBy字段作为reduce的key,在reduce阶段保存LastKey即可完成去重。

转自:https://tech.meituan.com/hive-sql-to-mapreduce.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值