Hive中的全排序:order by,sort by, distribute by

寫mapreduce程序時,如果reduce個數(shù)>1硕蛹,想要實現(xiàn)全排序需要控制好map的輸出,詳見Hadoop簡單實現(xiàn)全排序

現(xiàn)在學了hive噪裕,寫sql大家都很熟悉促煮,如果一個order by解決了全排序還用那么麻煩寫mapreduce函數(shù)嗎胳施?

事實上花沉,hive使用order by會默認設置reduce的個數(shù)=1况凉,既然reducer的個數(shù)都是1了谨湘,結果自然全排序绽快!

這也違背了充分利用分布式計算進行海量數(shù)據(jù)排序的初衷,效率低下紧阔。

那么hive又提供了一個可供選擇的方式:sort by

它會保證每個reducer的輸出文件是有序的(其實是廢話坊罢,每個reducer的輸出當然是有序的!)擅耽,要想實現(xiàn)全排序活孩,還得加一個order by的過程,就是對sort by的reduce輸出結果再進行一次排序乖仇。

所以:

要想用hive實現(xiàn)全排序:

要么用order by憾儒,但這樣默認了reducer個數(shù)為1询兴,效率低下。

要么用sort by+order by起趾,sort by過程可以設置reducer個數(shù)(n)诗舰,order by過程用n個reducer的輸出文件進行一次全排序,得到最終的結果训裆。

(個人理解眶根,如有錯誤請不吝賜教,感謝g员!)

注:

(1)對于order by汛闸,sort

by:

我們可以使用limit進行限制返回的行數(shù)蝙茶,從而實現(xiàn)抓出數(shù)據(jù)的top N的情形艺骂。

(2)對于distribute by:

sort by為每個reducer產(chǎn)生一個排序文件。在有些情況下隆夯,你需要控制某個特定行應該到哪個reducer钳恕,通常是為了進行后續(xù)的聚集操作。hive的distribute by就派上用場了:

From?table

select?year,?temperature

distribute?by?year

sort?by?year?asc,?temperature?desc;?

上面實現(xiàn)了局部排序蹄衷,且規(guī)定了:根據(jù)年份和氣溫對氣象數(shù)據(jù)進行排序忧额,以確保所有具有相同年份的行最終都在一個reducer分區(qū)中(文件下),可以看出愧口,distribute by經(jīng)常與sort by一起使用睦番。

需要注意的是,hive要求distribute by要寫在sort by之前耍属。

(3)對于cluster by:

簡而言之:cluster by column=distribute by column+sort by column(注意托嚣,都是針對column列,且采用默認ASC)

即對于上面例子:

From?table

select?year,?temperature

cluster?by?year;

就等于:

From?table

select?year,?temperature

distribute?by?year

sort?by?year;?

當然這失去了按照氣溫排序的要求厚骗。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末示启,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子领舰,更是在濱河造成了極大的恐慌夫嗓,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冲秽,死亡現(xiàn)場離奇詭異舍咖,居然都是意外死亡,警方通過查閱死者的電腦和手機锉桑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門排霉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人刨仑,你說我怎么就攤上這事郑诺〖欣眩” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵辙诞,是天一觀的道長辙售。 經(jīng)常有香客問我,道長飞涂,這世上最難降的妖魔是什么旦部? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮较店,結果婚禮上士八,老公的妹妹穿的比我還像新娘。我一直安慰自己梁呈,他們只是感情好婚度,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著官卡,像睡著了一般蝗茁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上寻咒,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天哮翘,我揣著相機與錄音,去河邊找鬼毛秘。 笑死饭寺,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的叫挟。 我是一名探鬼主播艰匙,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼霞揉!你這毒婦竟也來了旬薯?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤适秩,失蹤者是張志新(化名)和其女友劉穎绊序,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秽荞,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡骤公,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了扬跋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阶捆。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出洒试,到底是詐尸還是另有隱情倍奢,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布垒棋,位于F島的核電站卒煞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏叼架。R本人自食惡果不足惜畔裕,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乖订。 院中可真熱鬧扮饶,春花似錦、人聲如沸乍构。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜡吧。三九已至毫蚓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間昔善,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工畔乙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留君仆,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓牲距,卻偏偏與公主長得像返咱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子牍鞠,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容