中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

hadoop二次排序怎么理解

發布時間:2021-12-10 09:35:13 來源:億速云 閱讀:149 作者:iii 欄目:云計算

這篇文章主要講解了“hadoop二次排序怎么理解”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“hadoop二次排序怎么理解”吧!

1.流程 各個階段;
input ---> split ——> recordreader ——> 形成復合鍵值對textpair  ——> 分區(setGroupingComparatorClass設置的分區方法)輸出  ——> 對每個分區進行排序setSortComparatorClass(按照設定的排序方式對textpair進行排序,其實這已經進行了一次二次排序了)  ——> shuffle階段  ——> 內部排序(用setSortComparatorClass設定的排序方式,進行第二次排序) ——>分組(setGroupingComparatorClass設定的分組函數) ——> 執行reduce ——>輸出
2.各個流程詳解
Map階段:
 (1) 輸入的數據,安裝inputformat進行輸入,同時生成相應的鍵值對<key,value>;
 (2) 在Map函數中,對鍵值對key,value進行處理形成新的TextPair鍵值對 key1=key + value,value1=value,同時對TextPair的排序是先對key1的key排序,然后對value排序。
 (3) 在Spill輸出階段,用新定義的partion方法決定對應的reducer。分區是依據TextPair鍵的第一個字段(key)進行分區。
 (4) 對map輸出的分塊進行內部排序,排序方式采用我們定義的哦規則,實際上對其進行了一次二次排序(首先按照key1的第一個字段排序,然后按照第二個字段排序)
 (5)對一個分區的多個文件進行merge操作
Reduce階段:
 (1) Shuffle Reducer根據jobtracker查找到要讀取的文件,傳輸到Reducer,并進行merge操作。
 (2) 因為從不同節點讀取了相應的map輸出文件,所以在此處進行第二次排序,排序依然是根據我們定義的排序規則(TextPair的排序方法)進行排序,重新進行了一次二次排序。
 (3) 在reduce階段,會對鍵值相同的項進行分組操作,其默認操作的鍵。對于我們生產的鍵值對<key1,value1>,key1是一個復合鍵值對,我們對他的操作是針對key1的第一個值為準的。生成新的分組<key1,valueList<value1,value2........>>
 (4)reduce 對分組進行處理。
我們現在以Hadoop權威指南中的例子進行推演
在這個例子中,輸入的文件是這樣格式,第一列是時間,第二列是溫度
 1990 31
 1991 20
 1991 18
 1991 33
 1990 22
 1990 17
我們想要得到的結果如下(先按照年份排序,然后按照溫度排序)
 1990 17
 1990 22
 1990 31
 
 1991 18
 1991 20
 1991 33
 過程如下:
 (1)在map階段,將將輸入文件形成復合鍵值對
  <<1990 31> 31>
  <<1991 20> 20>
  <<1991 18> 18>
  <<1991 33> 33>
  <<1990 22> 22>
  <<1990 17> 17>
 (2)利用partion函數,對復合鍵的鍵值的第一列作為鍵進行分片,并進行內部排序
  
  <<1990 17> 17>
  <<1990 22> 22>
  <<1990 31> 31>
  
  <<1991 18> 18>
  <<1991 20> 20>
  <<1991 33> 33>
  這個文件分別映射到不同的reducer,Reducer從jobtracker中讀到要讀的文件
 (3)reducer通過shuffle將不同節點上的內容加載進來,并重新進行二次排序(因為不同節點上的相應部分被加載進來后,各個部分的內容不相同,需要重新進行二次排序)
  <<1990 17> 17>
  <<1990 22> 22>
  <<1990 31> 31>
  
  <<1991 18> 18>
  <<1991 20> 20>
  <<1991 33> 33>
 (4)分組
  reduce階段重新排序過后,還需要分組,分組所依據的鍵值是默認鍵,而我們穿過來的是復合鍵,其分組的時候,不一定按照年份來,所以我們重新實現分組函數,使得其以復合鍵的第一列作為鍵值進行分組
  reducer1:
   <<1990 17> <17 22 31>>
  reducer2:
   <<1991 18> <18 20 33>>
 (4)由reduce處理形成的分組,鍵值為復合鍵的第一列,value值為依次從valueList中取出的值
  reducer1輸出:
   1990 17
   1990 22
   1990 31
  reducer2輸出:
   1991 18
   1991 20
   1991 33

感謝各位的閱讀,以上就是“hadoop二次排序怎么理解”的內容了,經過本文的學習后,相信大家對hadoop二次排序怎么理解這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

滨州市| 永州市| 靖安县| 枣强县| 通许县| 东阿县| 山西省| 通辽市| 日喀则市| 宝鸡市| 卫辉市| 建始县| 微博| 金门县| 吉隆县| 阳泉市| 平江县| 同心县| 宁波市| 阳西县| 威信县| 亚东县| 治多县| 顺平县| 大同市| 东乌| 疏勒县| 达孜县| 大竹县| 普安县| 梓潼县| 黎川县| 永清县| 礼泉县| 松滋市| 辽阳市| 镇坪县| 四平市| 石屏县| 额济纳旗| 南阳市|