1.背景
hive中有一个store表,字段分别是"商店所属人标识"(merid),“商户余额(money)”,“商店名称(name)”。求每个法人下属的商店的余额按照降序排序。
-
//merid,money,name
-
B 10 store_B_4
-
A 12 store_A_1
-
A 14 store_A_2
-
B 15 store_B_1
-
B 19 store_B_2
-
B 30 store_B_3
2.distribute by、sort by
hive中(distribute by + “表中字段”)关键字控制map输出结果的分发,相同字段的map输出会发到一个reduce节点去处理。sort by为每一个reducer产生一个排序文件,他俩一般情况下会结合使用。
hive> select * from store distribute by merid sort by money desc;
![](https://img-blog.csdn.net/20180622095716488?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZhbnRhc3RpY3FpYW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
3.cluster by
cluster by 相当于 distribute by 和sort by 的结合,默认只能是升序,以下两种写法查询结果相同
-
//cluster by
-
hive>select * from store cluster by merid;
-
//distribute by,sort by
-
hive>select * from store distribute by merid sort by merid asc;
![](https://img-blog.csdn.net/20180622100541450?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZhbnRhc3RpY3FpYW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)