运行过程(CSDN)了解后,再看一下主要操作的实现原理:
join实现原理
select u.name, o.orderid from order o join user u on o.uid = u.uid;在map的输出value中为不同表的数据打上tag标记,在reduce阶段根据tag判断数据来源。MapReduce的过程如下
Group By的实现原理
select rank, isonline, count(*) from city group by rank, isonline;将GroupBy的字段组合为map的输出key值,利用MapReduce的排序,在reduce阶段保存LastKey区分不同的key。MapReduce的过程如下
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即可完成去重