Hive中的Order by ,Sort by ,Distribute by以及 Cluster By

一耸彪、order by

order by 會對輸入做全局排序,因此只有一個reducer(多個reducer無法保證全局有序)只有一個reducer凳谦,會導致當輸入規(guī)模較大時念恍,需要較長的計算時間。

set hive.mapred.mode=nonstrict; (default value / 默認值)
set hive.mapred.mode=strict;
order by 和數(shù)據(jù)庫中的Order by 功能一致恕稠,按照某一項 & 幾項 排序輸出琅绅。
與數(shù)據(jù)庫中 order by 的區(qū)別在于在hive.mapred.mode = strict 模式下 必須指定 limit 否則執(zhí)行會報錯。

hive> select * from test order by id;
FAILED: Error in semantic analysis: 1:28 In strict mode, if ORDER BY is specified, LIMIT must also be specified. Error encountered near token 'id'

原因: 在order by 狀態(tài)下所有數(shù)據(jù)會到一臺服務器進行reduce操作也即只有一個reduce鹅巍,如果在數(shù)據(jù)量大的情況下會出現(xiàn)無法輸出結果的情況千扶。

注意:可以用limit子句大大減少數(shù)據(jù)量。使用limit n后骆捧,傳輸?shù)絩educe端(單機)的數(shù)據(jù)記錄數(shù)就減少到n個澎羞。否則由于數(shù)據(jù)過大可能出不了結果

二、sort by

sort by不是全局排序敛苇,其在數(shù)據(jù)進入reducer前完成排序.

因此妆绞,如果用sort by進行排序,并且設置mapred.reduce.tasks>1枫攀, 則sort by只保證每個reducer的輸出有序括饶,不保證全局有序。

sort by 不受 hive.mapred.mode 是否為strict ,nostrict 的影響

sort by 的數(shù)據(jù)只能保證在同一reduce中的數(shù)據(jù)可以按指定字段排序来涨。

使用sort by 你可以指定執(zhí)行的reduce 個數(shù) (set mapred.reduce.tasks=<number>),對輸出的數(shù)據(jù)再執(zhí)行歸并排序图焰,即可以得到全部結果。

需要注意的是蹦掐,N個Reduce處理的數(shù)據(jù)范圍是可以重疊的技羔,所以最后排序完的N個文件之間數(shù)據(jù)范圍是有重疊的。

三卧抗、distribute by

按照指定的字段對數(shù)據(jù)進行劃分到不同的輸出reduce / 文件中藤滥。

insert overwrite local directory '/home/hadoop/out' select * from test order by name distribute by length(name);

此方法會根據(jù)name的長度劃分到不同的reduce中,最終輸出到不同的文件中社裆。

length 是內(nèi)建函數(shù)拙绊,也可以指定其他的函數(shù)或這使用自定義函數(shù)

這個可以保證每個Reduce處理的數(shù)據(jù)范圍不重疊,每個分區(qū)內(nèi)的數(shù)據(jù)是沒有排序的。

四时呀、Cluster By

cluster by 除了具有 distribute by 的功能外還兼具 sort by 的功能张漂。

但是排序只能是倒序排序,不能指定排序規(guī)則為asc 或者desc

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谨娜,一起剝皮案震驚了整個濱河市航攒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌趴梢,老刑警劉巖漠畜,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異坞靶,居然都是意外死亡憔狞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門彰阴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘾敢,“玉大人,你說我怎么就攤上這事尿这〈氐郑” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵射众,是天一觀的道長碟摆。 經(jīng)常有香客問我,道長叨橱,這世上最難降的妖魔是什么典蜕? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮罗洗,結果婚禮上愉舔,老公的妹妹穿的比我還像新娘。我一直安慰自己伙菜,他們只是感情好轩缤,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仇让,像睡著了一般。 火紅的嫁衣襯著肌膚如雪躺翻。 梳的紋絲不亂的頭發(fā)上丧叽,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機與錄音公你,去河邊找鬼踊淳。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的迂尝。 我是一名探鬼主播脱茉,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼垄开!你這毒婦竟也來了琴许?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤溉躲,失蹤者是張志新(化名)和其女友劉穎榜田,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锻梳,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡箭券,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了疑枯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辩块。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖荆永,靈堂內(nèi)的尸體忽然破棺而出废亭,到底是詐尸還是另有隱情,我是刑警寧澤屁魏,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布滔以,位于F島的核電站,受9級特大地震影響氓拼,放射性物質(zhì)發(fā)生泄漏你画。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一桃漾、第九天 我趴在偏房一處隱蔽的房頂上張望坏匪。 院中可真熱鬧,春花似錦撬统、人聲如沸适滓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凭迹。三九已至,卻和暖如春苦囱,著一層夾襖步出監(jiān)牢的瞬間嗅绸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工撕彤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鱼鸠,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像蚀狰,于是被迫代替她去往敵國和親愉昆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

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