MapReduce之分区器(Partitioner),这份333页关于性能优化知识点的PDF你不能不看

前言

在学习Java基础的过程中,泛型绝对算得上是一个比较难理解的知识点,尤其对于初学者而言,而且就算是已经有基础的Java程序员,可能对泛型的理解也不是那么透彻,属于那种看了明白,时间长了就忘的那种,究其根本,还是对泛型不够理解。

大部分人对泛型的认识:“基础知识,但是比较模糊”

public class HashPartitioner implements Partitioner {

public void configure(JobConf job) {}

/** Use {@link Object#hashCode()} to partition. */

public int getPartition(K2 key, V2 value,

int numReduceTasks) {

// key的hash值与integer的最大值取与然后对ReduceTask的个数取余

return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;

}

}

hash的好处是可以很key的分布更加随机,但是这样会将一些不同的key放在同一个分区中,这并不是我们所期望的。

[](()3.自定义Partitioner


面对HashPartitioner所具有的局限,我们可以通过自定义Partitioner来解决,如下:

[](()3.1 实现自定义分区器

import java.util.HashMap;

import java.util.Map;

你可能感兴趣的:(Java,经验分享,面试)