1. 程式人生 > >hive中 order by ,distribute by ,cluster by ,sort by 區別

hive中 order by ,distribute by ,cluster by ,sort by 區別

id name old
1 張三 10
1 李四 15
3 王五 20
4 趙六 25

 

 假設表中3個欄位

order by old 

展現出的資料將會根據old 這一列降序返回4條記錄,不具備任何形式的資料分佈

select * from table order by old desc

4 趙 25

3 王 20

1 李 15

1 張 10

distribute by 

map reduce 中,map 端將資料按 欄位 分佈 分發給 reduce  確保 每個reduce 收到的值 是相同的。具備分佈的特性

distibute by  id asc 則會將   資料相同的 分發到 一個 reduce 內。具體怎麼實現,欄位的雜湊值/reduce個數   然後取餘,餘數相同歸為一起

sort by

一般 和 distribute 聯用,達到分佈資料,並按照 指定列進行排序

cluster by 

將資料按照指定列分佈後降序 排序分發到各個reduce中

用cluster by 預設指的是 欄位 降序 分發,降序排序

例子

select * from table distribute by id sort by id desc

select * from table cluster by id  具備同樣效果

--結果

4 趙 25

3 王 20

1 李 15

1 張 10

例子

select * from table cluster by id sort by old asc

--bucket 1

4 趙 25

--bucket 2

3 王 20

1 張 10

1 李 15