Как hadoop узнает ваш тип ключа в потоковом режиме - PullRequest
2 голосов
/ 03 декабря 2011

После карты и перед уменьшением наступает фаза сортировки. В потоковом режиме откуда hadoop узнает, какой у вас ключ, и сортирует его.

Например

Формат входного файла

1990    1
1991    4
1992    5
...

У результата map есть ключи 1990,1991992 ..., как его сортирует hadoop? (по номерам или по алфавиту)

1 Ответ

5 голосов
/ 04 декабря 2011

В StreamJob пары ключ / значение для вывода карты указаны как

idResolver.resolve(jobConf_.get("stream.map.output",
  IdentifierResolver.TEXT_ID));
jobConf_.setClass("stream.map.output.reader.class",
  idResolver.getOutputReaderClass(), OutputReader.class);
jobConf_.setMapOutputKeyClass(idResolver.getOutputKeyClass());
jobConf_.setMapOutputValueClass(idResolver.getOutputValueClass());

Если для свойства stream.map.output не установлено значение rawbytes или typedbytes, ключ / значение для вывода карты задаются как Text.class в IdentifierResolver # resolve.

setOutputKeyClass(Text.class);
setOutputValueClass(Text.class);

В Text.java подкласс Comparator расширяет WritableComparator и реализует метод сравнения, который выполняет сравнение в лексикографическом порядке (словарь или алфавитный порядок).

Проверьте StreamJob , IdentifierResolver и Текст классов.

...