Как декодировать двоичный файл, который должен быть декодирован с использованием внешнего двоичного файла за один раз?

У меня есть большое количество входных файлов в проприетарном двоичном формате. Мне нужно превратить их в строки для дальнейшей обработки. Каждый файл должен быть декодирован за один раз внешним двоичным файлом (т. е. файлы не должны объединяться или разделяться).

Варианты, о которых я знаю:

  1. Принудительная загрузка одного файла, расширение RecordReader, использование DistributedCache для запуска декодера через RecordReader
  2. Принудительная загрузка одного файла, RecordReader возвращает один файл, используйте потоковую передачу Hadoop для декодирования каждого файла

Однако похоже, что [2] не будет работать, поскольку pig будет объединять записи перед отправкой их оператору STREAM (т. е. будет отправлять несколько записей).

[1] кажется выполнимым, просто немного больше работы.

Есть ли способ лучше?


person corsair    schedule 29.04.2013    source источник


Ответы (1)


Похоже, что вариант 1, который вы упомянули, является наиболее жизнеспособным вариантом. В дополнение к расширению RecordReader, соответствующий InputFormat должен быть расширен и переопределить isSplitable() для возврата false

person Niranjan Sarvi    schedule 01.05.2013