我们如何控制特定的键应该放在特定的减速器中?

时间:2016-08-03 06:38:38

标签: hadoop mapreduce

我们如何控制特定的键应该放在特定的减速器中?有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

partitioner是控制将哪些密钥发送到特定减速器的主要机制。

  

分区程序控制中间键的分区   地图输出。密钥(或密钥的一个子集)用于导出   分区,通常是哈希函数。总人数   分区与作业的reduce任务数相同。   因此,这控制了m中的哪一个减少了中间密钥的任务   (以及记录)被送去减少。

默认分区程序是HashPartitoner,它使用密钥对象的hashCode()来确定将给定密钥发送到哪个减少。

在您的驱动程序中,您可以使用以下方式设置其他分区程序:

job.setPartitionerClass(Class<? extends Partitioner> cls)

自定义分区程序实现Partitioner<K2, V2>接口,该接口只有一个需要实现的方法getPartition(KEY key, VALUE value, int numPartitions)

例如HashPartitioner的{​​{1}}实现如下:

getPartition