2010-06-15 3 views

ответ

15

Чтобы обрабатывать специализированные форматы файлов (например, видео) в Hadoop, вам нужно написать пользовательский InputFormat и RecordReader, который понимает, как превратить видеофайл в splits (InputFormat), а затем читать, разбивает на значения (RecordReader). Это нетривиальная задача и требует некоторых промежуточных знаний о том, как Hadoop обрабатывает расщепление данных. Я очень рекомендую «Удовольствие» Тома Уайта «Окончательный путеводитель» О'Рейли, а также видео на http://www.cloudera.com. (Полное раскрытие: я работаю для Cloudera.)

Имейте в виду, что видеоформаты, как правило, сжаты, что становится еще более сложным, потому что InputSplits (созданные InputFormat) являются простыми смещениями байта в файл (обычно). Начните с http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/InputFormat.html

Резюмируя: InputFormat знает, как создать список объектов InputSplit, которые (как правило) между 64 МБ и 128 МБ и сделать НЕ уважающих понятие кадров. Затем RecordReader используется для чтения фреймов из InputSplit для создания объектов значений, которые могут обрабатывать задание по сокращению карты. Если вы хотите генерировать видеовыход, вам также нужно будет написать собственный выходной файл.

Надеюсь, это поможет.

Смежные вопросы