更新時間:2021-05-26 來源:黑馬程序員 瀏覽量:
IT就到黑馬程序員.gif)
問題分析
即對key和value雙排序。默認情況下,Map輸出的結(jié)果會對Key進行默認的排序,但是有時候需要對Key排序的同時還需要對Value進行排序,這時候就要用到二次排序了。
核心答案講解
有兩種方法進行二次排序,分別為:buffer and in memory sort和 value-to-key conversion。
buffer and in memory sort
主要思想是:在reduce()函數(shù)中,將某個key對應(yīng)的所有value保存到內(nèi)存中,然后進行排序。 這種方法最大的缺點是:可能會造成out of memory。
value-to-key conversion
主要思想是:將key和部分value拼接成一個組合key(實現(xiàn)WritableComparable接口或者調(diào)用 setSortComparatorClass函數(shù)),這樣reduce獲取的結(jié)果便是先按key排序,后按value排序的結(jié)果,需要注意的是,用戶需 要自己實現(xiàn)Paritioner,以便只按照key進行數(shù)據(jù)劃分。Hadoop顯式的支持二次排序,在Configuration類中有個 setGroupingComparatorClass()方法,可用于設(shè)置排序被group的key值。
問題擴展
MapReduce:寫Mapreduce進行數(shù)據(jù)處理,需要利用java、python等語言進行開發(fā)調(diào)試,如果沒有一項技術(shù)(如 Java)基礎(chǔ),幾乎不可能學(xué)會 MapReduce。
Hive:Hive 構(gòu)建于傳統(tǒng)的數(shù)據(jù)庫和數(shù)據(jù)倉庫理念之上。它對待數(shù)據(jù)的方式就像是它有一個基于 SQL 或基于架構(gòu)的結(jié)構(gòu)。Apache Hive提供了一種更具體和更高級的語言,通過運行Hadoop作業(yè)來查詢數(shù)據(jù),而不是直接編寫腳本來逐步操作Hadoop上的幾個MapReduce作業(yè)。Hive的初步設(shè)計思路在于提供與SQL類似的使用體驗,開發(fā)人員只需要掌握Sql相關(guān)的知識就可以使用。
項目應(yīng)用
在大數(shù)據(jù)的復(fù)雜統(tǒng)計分析中,可以使用Hive的SQL功能來實現(xiàn)排序等不同的算法,降低入門難度,提高研發(fā)效率。
Hadoop實現(xiàn)join的幾種方法【大數(shù)據(jù)開發(fā)面試】?
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運營】深圳跨境電商運營畢業(yè)22個工作日,就業(yè)率91%+,最高薪資達13500元
2025-09-19【AI運維】鄭州運維1期就業(yè)班,畢業(yè)14個工作日,班級93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19