您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“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è)資訊頻道!
免責(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)容。