Hadoop 0.2: Как прочитать выходные данные из TextOutputFormat? - PullRequest
3 голосов
/ 09 апреля 2010

Мой класс редуктора производит выходные данные с TextOutputFormat (OutputFormat по умолчанию, заданный Job). Мне нравится использовать эти выходные данные после завершения задания MapReduce для агрегирования выходных данных. В дополнение к этому я хотел бы записать агрегированную информацию с помощью TextInputFormat, чтобы выходные данные этого процесса могли использоваться на следующей итерации задачи MapReduce. Может кто-нибудь дать мне пример, как писать и читать с TextFormat? Кстати, причина, по которой я использую TextFormat, а не Sequence, заключается в совместимости. Выходы должны быть использованы любым программным обеспечением.

1 Ответ

5 голосов
/ 13 апреля 2010

Пока не исключайте файлы последовательности; они позволяют быстро и легко связывать задания MapReduce, и вы можете использовать «hadoop fs -text filename » для вывода их в текстовом формате, если они вам нужны для других целей.

Но вернемся к исходному вопросу: чтобы использовать TextInputFormat, установите его в качестве формата ввода в задании, а затем используйте TextInputFormat.setInputPaths, чтобы указать, какие файлы следует использовать в качестве входных данных. Ключ к вашему преобразователю должен быть LongWritable, а значение Text.

Для использования TextOutputFormat в качестве вывода установите его в качестве формата вывода в задании, а затем используйте TextOuputFormat.setOutputPath, чтобы указать путь вывода. Ваши редукторы (или преобразователи, если это задание только для карты) должны использовать NullWritable в качестве типа выходного ключа, чтобы получить только текстовое представление значений по одному в строке, иначе каждая строка будет текстовым представлением ключа и значения, разделенных вкладкой (по умолчанию вы можете изменить это, установив «mapred.textoutputformat.separator» в другой разделитель).

...