MapReduce的分割槽 (Partition)

2021-09-02 23:00:41 字數 1040 閱讀 3143

分割槽的概念

在mapreduce中,資料進行map轉換後,預設根據map後資料的key值進行雜湊派發,同乙個分割槽的資料傳送到同乙個reduce中去處理。但實際中,這種方式不是高效的,並且有時並不能滿足我們的需求。所以我們需要自定義分割槽方式,根據自己的需求,選擇記錄的reducer。進行自定義分割槽時,我們需要繼承partitioner類,重寫get方法,實現自定義分割槽。

分割槽的實現

首先。我們來看看partitioner類。partitioner類需要傳入兩個引數,分別是進行map操作後的key值和value值。在get方法中傳入三個引數map操作後的key值、value值及reducetask的個數。在自定義分割槽時,若不設定預設是1個。

可以仿照patitioner類的實現類hashpartitioner編寫自己的分割槽類。

舉例:對錶中第六個字段小於15的和大於等於15的資料進行分割槽。

import org.apache.hadoop.io.nullwritable;

import org.apache.hadoop.io.text;

import org.apache.hadoop.mapreduce.partitioner;

public class partitionerown extends partitionerelse

}return 0;}}

在run方法中新增 一行**:

//第三步:設定分割槽類,使用自定義分割槽類進行分割槽

job.setpartitionerclass(partitionerown.class);

job.setnumreducetasks(2);

mapreduce設定分割槽partition

在執行mr程式時我們可能想要將不同的資料放到不同的檔案中。比如說想要將相同省份的資訊放到乙個檔案中,不同省份的資訊放在不同的檔案中。這個時候如果有多個reduce的話就可以將相同的省份放到同乙個reduce中,這樣就可以將相同的省份放到同乙個檔案中。partition是在map階段完成後執行的。將分...

理解MapReduce中的切片 分割槽 ????

如上圖,如果我hdfs中,word目錄下有這四個檔案,那麼它能分為幾個切片呢?maptask的數量 切片數量 切塊也分為兩種 一種是物理切塊,一種是邏輯切塊 前者是將檔案真正的變成檔案塊 後者是用物件來封裝每個檔案塊的資訊,比如資料夾的起始位置 和長度。這樣的來分切塊的作用,假如我乙個檔案是129m...

mapreduce原理 分割槽,分組

分析這個原理,的原因是 1 更好的理解mapreduce的過程。2 在二次排序時會用到這個原理,二次排序要重寫分割槽方法,重寫分組方法 如果原理沒搞明白,就無法寫二次排序的 key 預設分割槽 預設分組 自定義分割槽 自定義分組 abc123 1 使用系統預設分割槽方式,是按key 進行分割槽。2 ...