Когда я выполняю потоковую передачу Hadoop. Там вывод картографа (ключ, значение)
Ключ - это последовательность слов, разделенная пробелом.
Я бы хотел использовать разделитель, который возвращает хеш-значение первых двух слов.
Итак, реализовано как
public static class CounterPartitioner extends Partitioner<Text, IntWritable> {
@Override
public int getPartition(Text key, IntWritable value, int numPartitions) {
String[] line = key.toString().split(" ");
String prefix = (line.length > 1) ? (line[0] + line[1]) : line[0];
return (prefix.hashCode() & Integer.MAX_VALUE) % numPartitions;
}
}
Мой вопрос
Есть ли способ с помощью встроенной библиотеки Hadoop и изменения конфигурации, такие как
mapred.output.key.comparator.class
stream.map.output.field.separator
stream.num.map.output.key.fields
map.output.key.field.separator
mapred.text.key.comparator.options
...
Заранее спасибо.