Разделитель Hadoop за первые два слова ключа - PullRequest
1 голос
/ 23 декабря 2011

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

Заранее спасибо.

1 Ответ

2 голосов
/ 23 декабря 2011

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

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

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

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

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

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

...