我有一个像“签名[空白]日期[空白]时间”这样的密钥,但我想要在同一个 bin 中具有相同签名的所有密钥。如何为这种情况编写分区程序?
此致,
默认使用 HashParititioner,整个 hashcode 用于计算 reducer 数量。为了完成您的任务,您可以只散列部分密钥(在您的情况下为签名),并且所有具有相同签名的密钥将分配给同一个减速器。
试试这个代码:
public class HashPartitioner<K, V> extends Partitioner<K, V> {
public int getPartition(K key, V value,int numReduceTasks) {
return key.toString().split("\s+")[0].hashCode() % numReduceTasks;
}
}