「signature[空白]日付[空白]時間」のようなキーがありますが、同じビンに同じ署名を持つすべてのキーが必要です。そのような状況のためにpartionerを書く方法は?
よろしくお願いします、
デフォルトでは 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;
}
}