1. order by
2. sort by
Hive中指定了sort by,那麼在每個reducer端都會做排序,也就是說保證了局部有序(每個reducer出來的數據是有序的,但是不能保證所有的數據是有序的,除非只有一個reducer),好處是:執行了局部排序之後可以爲接下去的全局排序提高不少的效率(其實就是做一次歸併排序就可以做到全局排序了)。
3. distribute by和sort by一起使用
ditribute by是控制map的輸出在reducer是如何劃分的,舉個例子,我們有一張表,mid是指這個store所屬的商戶,money是這個商戶的盈利,name是這個store的名字
store:
mid | money | name |
AA | 15.0 | 商店1 |
AA | 20.0 | 商店2 |
BB | 22.0 | 商店3 |
CC | 44.0 | 商店4 |
執行hive語句:
- select mid, money, name from store distribute by mid sort by mid asc, money asc
4. cluster by
cluster by的功能就是distribute by和sort by相結合,如下2個語句是等價的:
- select mid, money, name from store cluster by mid
- select mid, money, name from store distribute by mid sort by mid
- select mid, money, name from store cluster by mid sort by money
注意被cluster by指定的列只能是降序,不能指定asc和desc。
原文地址:http://blog.csdn.net/jthink_/article/details/38903775