MapReduce分割槽 自定義輸入輸出

2021-09-02 19:17:42 字數 1120 閱讀 8183

**實現:

import org.apache.hadoop.io.text;

import org.apache.hadoop.mapreduce.partitioner;

/* * 泛型型別的是由reducer的輸入型別決定的

*/public class flowpartition extends partitionerelse if("上海".equals(addr))else }

}

driver中:

//指定使用自定義分割槽

job.setpartitionerclass(flowpartition.class);

//指定有多少個reducer元件(分割槽)

job.setnumreducetasks(3);

**實現:

三、自定義格式輸出:

-輸出key、value之間用指定符號分隔

-指定輸出檔名稱(完全、不完全替代)

1.定義自定義輸出類,繼承fileoutputformat類,有兩個泛型,將fileoutputformat類上的泛型新增到自定義輸出類上

2.重寫getrecordwriter();返回乙個recordwriter的例項或子類物件;

3.建立recordwriter的類,重寫writer()、close()方法。

-定義輸出流,定義帶參的建構函式,用來對輸出流初始化。

-write方法用來向最終結果檔案輸出資料。

-可以在該方法中定製輸出格式

-close方法用來關閉輸出流

4.在自定義輸出類的getrecordwriter()方法中

-可以通過呼叫 super.getdefaultworkfile()方法,來獲取使用者輸入的路徑

-由該路徑指定檔案系統,以及確定輸出流

5.將該輸出流傳遞給recorwriter的子類例項。

**實現:

MapReduce如何自定義分割槽

我任然套用之前發過的乙個mapreduce例子來演示如何自定義分割槽,大家可以先去看一下我之前的例子 下面沿用上面的例子,在pom和 不變的情況下,做乙個自定義分割槽操作,目的是根據手機號前三位的不同分配資料到不同分割槽,如此我使用如下自定義分割槽類 package com.wy import or...

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

mapreduce中二次排序的思想中,我們常常需要對資料的分割槽分組進行自定義,以下就介紹一下自定義分割槽分組的簡單實現 1 自定義分割槽 public class demopartitionerextends partitioner return 4 要注意的是 設定了分割槽之後,reduce任務...

hadoop自定義分割槽

實現自定義分割槽比較簡單了,繼承partitioner,實現getpartition 方法就行了,分割槽是按照key進行的。以wordcount為例。輸入文字1 hello world hello 3.輸入文字2 hello world world 4 編寫程式,hello 和world各自為乙個分...