溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Hive中如何排序

發(fā)布時(shí)間:2021-12-10 11:05:51 來(lái)源:億速云 閱讀:201 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“Hive中如何排序”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Hive中如何排序”這篇文章吧。

1、全局排序:order  by 

order by 子句出現(xiàn)在select語(yǔ)句的結(jié)尾;order by子句對(duì)最終的結(jié)果進(jìn)行排序;默認(rèn)使用升序(ASC);可以使用DESC,跟在字段名之后表示降序;
ORDER BY執(zhí)行全局排序,只有一個(gè)reduce;

-- 按別名排序
select empno, ename, job, mgr, sal + nvl(comm, 0) salcomm, deptno  from emp  order by salcomm desc;
-- 多列排序
select empno, ename, job, mgr, sal + nvl(comm, 0) salcomm, deptno  from emp   order by deptno, salcomm desc;

2、每個(gè)MR內(nèi)部排序:sort by

對(duì)于大規(guī)模數(shù)據(jù)而言order by效率低;在很多業(yè)務(wù)場(chǎng)景,我們并不需要全局有序的數(shù)據(jù),此時(shí)可以使用sort by;sort by為每個(gè)reduce產(chǎn)生一個(gè)排序文件,在reduce內(nèi)部進(jìn)行排序,得到局部有序的結(jié)果;

-- 設(shè)置reduce個(gè)數(shù)
set mapreduce.job.reduces=2;   -- 按照工資降序查看員工信息   select * from emp sort by sal desc;
-- 將查詢結(jié)果導(dǎo)入到文件中(按照工資降序)。生成兩個(gè)輸出文件,每個(gè)文件內(nèi)部數(shù)據(jù)按工資降序排列
insert overwrite local directory '/home/hadoop/output/sortsal'    select * from emp sort by sal desc;

3、分區(qū)排序:distribute by

distribute by 將特定的行發(fā)送到特定的reducer中,便于后繼的聚合 與 排序操作;distribute by 類似于MR中的分區(qū)操作,可以結(jié)合sort by操作,使分區(qū)數(shù)據(jù)有序;distribute by 要寫在sort by之前;

-- 將數(shù)據(jù)分到3個(gè)區(qū)中,每個(gè)分區(qū)都有數(shù)據(jù)
set mapreduce.job.reduces=3;
insert overwrite local directory '/home/hadoop/output/distBy1'  select empno, ename, job, deptno, sal + nvl(comm, 0) salcomm  from emp distribute by deptno   sort by salcomm desc;

4、cluster by 

當(dāng)distribute by 與 sort by是同一個(gè)字段時(shí),可使用cluster by簡(jiǎn)化語(yǔ)法; cluster by 只能是升序,不能指定排序規(guī)則;-- 語(yǔ)法上是等價(jià)的
select * from emp distribute by deptno sort by deptno;   select * from emp cluster by deptno;

排序小結(jié):
order by。執(zhí)行全局排序,效率低。生產(chǎn)環(huán)境中慎用
sort by。使數(shù)據(jù)局部有序(在reduce內(nèi)部有序)
distribute by。按照指定的條件將數(shù)據(jù)分組,常與sort by聯(lián)用,使數(shù)據(jù)局部有序cluster by。

當(dāng)distribute by 與 sort by是同一個(gè)字段時(shí),可使用cluster by簡(jiǎn)化語(yǔ)法

以上是“Hive中如何排序”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI