Когда я выполняю потоки Hadoop. Появится вывод mapper (Key, Value) Ключ - это последовательность слов, разделенная пробелом.Разделитель 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
...
Спасибо заранее.