mapreduce自定義分組 自定義分割槽 二次排序

2021-08-29 10:19:01 字數 914 閱讀 5253

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...