Как управлять именем и содержимым выходных файлов задания потоковой передачи Hadoop?

StackOverflow https://stackoverflow.com/questions/887835

Вопрос

Есть ли способ контролировать имена выходных файлов задания потоковой передачи Hadoop?В частности, я хотел бы, чтобы содержимое и имя выходных файлов моего задания были организованы по кету, который выводит редуктор - каждый файл будет содержать значения только для одного ключа, а его имя будет ключом.

Обновлять:Только что нашел ответ. Использование класса Java, производного от MultipleOutputFormat, в качестве формата вывода заданий позволяет управлять именами выходных файлов.http://hadoop.apache.org/core/docs/current/api/org/apache/hadoop/mapred/lib/MultipleOutputFormat.html

Я не видел там никаких образцов...Может ли кто-нибудь указать на пример Hadoop Streaming, в котором используется Java-класс пользовательского формата вывода?

Это было полезно?

Решение

Использование класса Java, производного от MultipleOutputFormat, в качестве формата вывода заданий позволяет управлять именами выходных файлов. http://hadoop.apache.org/core/docs/current/api/org/apache/hadoop/mapred/lib/MultipleOutputFormat.html

При использовании потоковой передачи Hadoop, поскольку поддерживается только один JAR-файл, вам фактически придется разветвить jar-файл потоковой передачи и поместить в него новые классы формата вывода, чтобы задания потоковой передачи могли ссылаться на него...

РЕДАКТИРОВАТЬ:Начиная с версии 0.20.2 Hadoop этот класс устарел, и теперь вам следует использовать:http://hadoop.apache.org/docs/mapreduce/current/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html

Другие советы

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

Однако ничто не мешает вам выполнить это разделение и переименование после завершения работы.Вы можете $HADOOP dfs -cat path/to/your/output/directory/part-* и передать его в свой сценарий, который разбивает содержимое по ключам и записывает его в новые файлы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top