Как указать вкладку как разделитель записей для входного текстового файла hadoop? - PullRequest
0 голосов
/ 01 сентября 2011

Входным файлом для моего задания hadoop M / R является текстовый файл, в котором записи разделены символом табуляции '\ t' вместо новой строки '\ n'.Как я могу дать команду hadoop разделить, используя символ табуляции, так как по умолчанию он разделяется вокруг новых строк, и каждая строка в текстовом файле берется как запись.

Один из способов сделать это - использовать пользовательский класс формата вводакоторый использует фильтр потока для преобразования всех вкладок в исходном потоке в новые строки.Но это не выглядит элегантно.

Другой способ - использовать java.util.Scanner с табуляцией в качестве разделителя.Но я не могу понять, как использовать класс java.util.Scanner в классах входного формата.

Каков наилучший подход и альтернативы?

1 Ответ

1 голос
/ 01 сентября 2011

Значения '\ r' и '\ n' жестко запрограммированы в классе org.apache.hadoop.util.LineReader, поэтому вы не можете использовать TextInputFormat с записями, разделенными табуляцией. Но не сложно реализовать собственный InputFormat со специальным классом LineReader. Самое простое решение - скопировать-вставить классы TextInputFormat, LineRecordReader и LineReader, переместить их в свой пакет и изменить реализацию LineReader.

...