0

我有一个像“签名[空白]日期[空白]时间”这样的密钥,但我想要在同一个 bin 中具有相同签名的所有密钥。如何为这种情况编写分区程序?

此致,

4

1 回答 1

1

默认使用 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;
   }
}
于 2012-11-02T08:01:16.340 回答