0

「signature[空白]日付[空白]時間」のようなキーがありますが、同じビンに同じ署名を持つすべてのキーが必要です。そのような状況のためにpartionerを書く方法は?

よろしくお願いします、

4

1 に答える 1

1

デフォルトでは HashParititioner が使用され、ハッシュコード全体がレデューサー番号の計算に使用されます。タスクを達成するには、キーの一部 (この場合は署名) のみをハッシュし、同じ署名を持つすべてのキーを同じレデューサーに割り当てます。

このコードを試してください:

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 に答える