日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

04Hadoop中的setPartitionerClass/SortComparator/GroupingComparator问题

發布時間:2023/12/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 04Hadoop中的setPartitionerClass/SortComparator/GroupingComparator问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • map階段
1. 使用job.setInputFormatClass(TextInputFormat)做為輸入格式。注意輸出應該符合自定義Map中定義的輸出。 2. 進入Mapper的map()方法,生成一個List。 3. 在map階段的最后,會先調用job.setPartitionerClass()對這個List進行分區,每個分區映射到一個reducer。 4. 每個分區內又調用job.setSortComparatorClass()設置的key比較函數類排序(如果沒有通過job.setSortComparatorClass()設置key比較函數類,則使用key的實現的compareTo方法)。可以看到,這是一個二次排序。 5. 如果設置了Combiner(job.setCombinerClass)對output進行一次合并,從而減少對reduce的輸出流量和預處理reduce的input數據。但不一定會執行,對于Combiner執行時機參考Reference[4]。 【說明】以上步驟省略了collect階段、cache階段等細節,更詳細步驟參考Reference[3]
  • reduce階段
1. shuffle階段 reducer開始fetch所有映射到這個reducer的map輸出。 2.1 sort階段 再次調用job.setSortComparatorClass()設置的key比較函數類對所有數據對排序(因為一個reducer接受多個mappers,需要重新排序)。 2.2 secondary sort階段 然后開始構造一個key對應的value迭代器。這時就要用到分組,使用jobjob.setGroupingComparatorClass()設置的分組函數類。只要這個比較器比較的兩個key相同,他們就屬于同一個組,它們的value放在一個value迭代器,而這個迭代器的key使用屬于同一個組的所有key的第一個key。 3.reduce階段 最后就是進入Reducer的reduce()方法,reduce()方法的輸入是所有的(key和它的value迭代器)。同樣注意輸入與輸出的類型必須與自定義的Reducer中聲明的一致。 【注意】reducers的輸出是無序的。

總結

以上是生活随笔為你收集整理的04Hadoop中的setPartitionerClass/SortComparator/GroupingComparator问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。