mapreduce中二次排序的思想中,我們常常需要對資料的分割槽分組進行自定義,
以下就介紹一下自定義分割槽分組的簡單實現
1、自定義分割槽:
public class demopartitionerextends partitioner
return 4;
}}
要注意的是:設定了分割槽之後,reduce任務的個數就只能設定和分割槽數量一樣的個數了!!
2、自定義分組:
class demogroup implements rawcomparator
/*** b1 第乙個參與比較的位元組陣列
* s1 第乙個位元組陣列中開始比較的位置
* l1 第乙個位元組陣列參與比較的長度
* b2 第二個參與比較的位元組陣列
* s2 第二個位元組陣列中開始比較的位置
* l2 第二個位元組陣列參與比較的長度
*/public int compare(byte b1, int s1, int l1, byte b2, int s2, int l2)
}
3、場景模擬:對於二次排序的思想
當出現以下需求
a 1 1 a 1 1
b 2 3 》 a 2 0
a 2 0 b 2 3
這個時候可以讓a1、a2、b2這三個當做key來排序,
實現排序功能,但這個時候a1,a2不應該在不同的分割槽或者組內
顯然a、b應為分割槽,分組的條件,這時候就需要自定義分割槽和分組了
MapReduce如何自定義分割槽
我任然套用之前發過的乙個mapreduce例子來演示如何自定義分割槽,大家可以先去看一下我之前的例子 下面沿用上面的例子,在pom和 不變的情況下,做乙個自定義分割槽操作,目的是根據手機號前三位的不同分配資料到不同分割槽,如此我使用如下自定義分割槽類 package com.wy import or...
mapduce中自定義分組
1.對流量原始日誌進行流量統計,將不同省份的使用者統計結果輸出到不同檔案 2.需要自定義改造兩個機制 1 改造分割槽的邏輯,自定義乙個partitioner 2 自定義reduer task的併發任務數 3.如下 public class flowsortmr public static class...
自定義TextBox,實現自增自減
我們使用附加屬性來實現,依賴屬性也可以實現,原理一樣 如圖xmal cs,定義附加屬性 using system using system.collections.generic using system.linq using system.text using system.threading.t...