我们如何控制特定的键应该放在特定的减速器中?有人可以帮我解决这个问题吗?
答案 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