HiveSql的原理解析
HiveSQL底层默认是基于MR程序运行的,我们分析HiveSQL的运行原理之前,首先看一下MR程序实现一些SQL操作的基本原理。
MapReduce实现基本SQL操作的原理
MR中join的实现原理
select u.name, o.orderid from order o join user u on o.uid = u.uid;
在map的输出value中为不同表的数据打上tag标记,在reduce阶段根据tag判断数据来源。MapReduce的过程如下:
MR中group by的实现原理
select rank, isonline, count(*) from city group by rank, isonline;
将GroupBy的字段组合为map的输出key值,利用MapReduce的排序,在reduce阶段保存LastKey区分不同的key。MapReduce的过程如下(当然这里只是说明Reduce端的非Hash聚合过程):
MR中distinct的实现原理
select dealid, count(distinct u