2011-12-23 2 views
1

Когда я выполняю потоки 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 
... 

Спасибо заранее.

ответ

2

Когда я выполняю потоки Hadoop. Появится вывод mapper (Key, Value). Клавиша - это последовательность слов, разделенная пробелом.

Мой вопрос, есть ли способ с помощью встроенной библиотеки Hadoop и изменения конфигурации, такие как

mapred.output.key.comparator.class stream.map.output.field.separator

Встроенная библиотека Hadoop основана на Java, и целью потоковой передачи является использование других языков, помимо Java, которые ведут переговоры с STDIO/STDOUT.

Я не вижу цели изменения связанных с потоком свойств с помощью API Hadoop, который построен с использованием Java.

BYW, Configuration#set можно использовать для настройки свойств конфигурации, помимо установки их в файлах конфигурации и из командной строки.

Смежные вопросы