亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

MapReduce中怎么實現排序和分組

發布時間:2021-08-12 14:45:17 來源:億速云 閱讀:136 作者:Leah 欄目:云計算

今天就跟大家聊聊有關MapReduce中怎么實現排序和分組,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

        Map 起始階段

        在Map階段,使用 job.setInputFormatClass() 定義的 InputFormat ,將輸入的數據集分割成小數據塊 split,同時 InputFormat 提供一個 RecordReader的實現。本課程中使用的是 TextInputFormat,它提供的 RecordReader 會將文本的行號作為 Key,這一行的文本作為 Value。這就是自定義 Mapper 的輸入是 < LongWritable,Text> 的原因。 然后調用自定義 Mapper 的map方法,將一個個< LongWritable,Text>鍵值對輸入給 Mapper 的 map方法。

        Map 最后階段

        在 Map 階段的最后,會先調用 job.setPartitionerClass() 對這個 Mapper 的輸出結果進行分區,每個分區映射到一個Reducer。每個分區內又調用 job.setSortComparatorClass() 設置的 Key 比較函數類排序。 可以看到,這本身就是一個二次排序。如果沒有通過 job.setSortComparatorClass() 設置 Key 比較函數類,則使用 Key 實現的 compareTo() 方法。我們既可以使用 IntPair 實現的 compareTo() 方法,也可以專門定義 Key 比較函數類。

        Reduce 階段

        在 Reduce 階段,reduce() 方法接受所有映射到這個 Reduce 的 map 輸出后,也是會調用 job.setSortComparatorClass()方法設置的 Key 比較函數類,對所有數據進行排序。然后開始構造一個 Key 對應的 Value 迭代器。 這時就要用到分組,使用 job.setGroupingComparatorClass()方法設置分組函數類。只要這個比較器比較的兩個 Key 相同,它們就屬于同一組,它們的 Value 放在一個 Value 迭代器,而這個迭代器的 Key 使用屬于同一個組的所有Key的第一個Key。最后就是進入 Reducer 的 reduce() 方法,reduce() 方法的輸入是所有的 Key 和它的 Value 迭代器,同樣注意輸入與輸出的類型必須與自定義的 Reducer 中聲明的一致。

  job.setPartitionerClass() 和job.setGroupingComparatorClass()的關系

reduce方法每次是讀一條記錄,讀到相應的key,但是處理value集合時,處理完當前記錄的values后,還會判斷下一條記錄是不是和當前的key是不是同一個組,如果是的話,會繼續讀取這些記錄的值,而這個記錄也會被認為已經處理了,直到記錄不是當前組,這次reduce調用才結束,這樣一次reduce調用就會處理掉一個組中的所有記錄,而不僅僅是一條了。這個有什么用呢?如果不用分組,那么同一組的記錄就要在多次reduce方法中獨立處理,那么有些狀態數據就要傳遞了,就會增加復雜度,在一次調用中處理的話,這些狀態只要用方法內的變量就可以的。比如查找最大值,只要讀第一個值就可以了。

看完上述內容,你們對MapReduce中怎么實現排序和分組有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

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

AI

高青县| 方正县| 广东省| 博客| 当雄县| 太仆寺旗| 信宜市| 靖江市| 和硕县| 绵竹市| 崇礼县| 枣庄市| 咸宁市| 博野县| 二连浩特市| 永登县| 宜兴市| 佛山市| 亳州市| 安丘市| 娄底市| 道孚县| 客服| 五台县| 柳河县| 海兴县| 道真| 岑巩县| 建始县| 繁峙县| 玉溪市| 平舆县| 浮山县| 旺苍县| 抚远县| 尉犁县| 仙桃市| 萨嘎县| 葫芦岛市| 南雄市| 宜兰市|