HiveDistinct的实现原理
科技环保
Distinct 的实现原理
四的四字成语
女生短头发lect dealid,count(distinct uid) num from order group by dealid;
当只有⼀个distinct字段时,如果不考虑Map阶段的Hash GroupBy,只需要将GroupBy字段和Distinct字段组合为map输出key,利⽤mapreduce的排序,同时将GroupBy字段作 为reduce的key,在reduce阶段保存LastKey即可完成去重。
如果有多个distinct字段呢,如下⾯的SQL:如何清除上网记录
英雄辈出
卓文君简介lect dealid,count(distinct uid),count(distinct date)from order group by dealid;
实现⽅式有两种:
(1)如果仍然按照上⾯⼀个distinct字段的⽅法,即下图这种实现⽅式,⽆法跟据uid和date分别排序,也就⽆法通过LastKey去重,仍然需要在reduce阶段在内存中通过Hash去重小说图片
(2)第⼆种实现⽅式,可以对所有的distinct字段编号,每⾏数据⽣成n⾏数据,那么相同字段就会分别排序,这时只需要在reduce阶段记录LastKey即可去重。这种实现⽅式很好的利⽤了MapReduce的排序,节省了reduce阶段去重的内存消耗,但是缺点是增加了shuffle 的数据量。需要注意的是,在⽣成reduce value时,除第⼀个distinct字段所在⾏需要保留value值,其余distinct数据⾏value字段均可为空。干炒牛河的做法