объединение выходов редуктора из SequenceFileOutputFormat - PullRequest
1 голос
/ 15 сентября 2011

У меня есть работа, которая использует 100 редукторов, настроенных с setOutputFormat (SequenceFileOutputFormat.class);

После выполнения задания можно ли объединить все файлы деталей с помощью Следующая команда и все работает правильно компрессия?

hadoop fs -cat output / part *> fullOutput

Если нет, то каков предпочтительный способ использования нескольких редукторы, но затем объединить весь их вывод в один файл?

Большое спасибо,

- Art

1 Ответ

0 голосов
/ 15 сентября 2011

Какое сжатие вы используете? С некоторыми кодеками это, безусловно, не будет работать. Например, кодек Lzop имеет заголовки в начале каждого файла, и поэтому, если вы просто присоединитесь к файлам, у них будут заголовки с вкраплениями внутри. Кодек Lzo (без завершающего 'p') не включает заголовки - и до вашего вопроса я не понимал, почему он существует. Я думаю, что есть вероятность, что эти части соединятся вместе.

  1. Если вы можете обрабатывать свою работу в одном редукторе, вы можете это сделать. Или вы можете запустить его с меньшим количеством редукторов и не беспокоиться о комбинировании файлов, поскольку вы можете использовать каталог в качестве входных данных для вашего следующего задания.

  2. Вы можете запустить последующее задание MR (IdentityMapper, IdentityReducer), которое объединит ваши выходные файлы, используя один редуктор.

  3. Вы можете распаковать, а затем снова сжать.

    hadoop dfs -cat output/* | lzop -d -c > full

Раньше я беспокоился об этом немного. Теперь я использую меньше редукторов и избегаю сжатия небольших и временных файлов.

...