Hive中的排序order by、sort by、distribute by、cluster by的區別

目錄

1.原始數據

2.order by

3.distribute by、sort by

4.cluster by


1.原始數據

 

假設原始數據如下,分別是每名學生的成績單

name    coarse    score
小紅    語文        88
小明    數學        85
小紅    數學        82
小明    語文        80

2.order by

order by操作會進行完全的排序,但是有個問題是因爲只有一個reducer,對於較大規模的數據是一個性能瓶頸。

select * from score_table order by score;


小明    語文        80
小紅    數學        82
小明    數學        85
小紅    語文        88

3.distribute by、sort by

sort by是針對每個reducer進行排序,但這種排序只是局部的單個reducer內的排序,不會進行全局排序。sort by可以利用多個reducer提升性能。distribute by則會將指定的行放入同一個reducer當中進行排序。

select * from score_table ditribute by name sort by name,score;


小明    語文        80
小明    數學        85
小紅    數學        82
小紅    語文        88

4.cluster by

cluster by 相當於distribute by和sort by的結合體,它會對指定的列進行排序並輸出。

select * from score_table cluster by name;

小明    數學        85
小明    語文        80
小紅    數學        82
小紅    語文        88

 

參考地址:https://blog.csdn.net/qq_40795214/article/details/82190827

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章