2014-01-14 4 views
0

Я занимаюсь разработкой программы через Hadoop, которая является относительно новой для меня, поэтому я был бы признателен за совет по созданию концепции того, что я планирую делать.Hadoop: группировка файлов для сопоставления

У меня есть большой упорядоченный набор из 1 ... n изображений. Изображения логически разделены на несколько групп, каждая из которых может обрабатываться независимо. Однако внутри одной группы все изображения зависят и поэтому должны обрабатываться одной задачей карты. Сами изображения малы, поэтому загрузка их в память одновременно не должна быть проблемой.

Я думал об упаковке каждой группы в отдельный файл SequenceFile, но, похоже, нет способа прочитать SequenceFile из InputStream ... Или, может быть, есть способ как-то выделить M разных узлов для одного MapReduce чтобы каждый узел считывал свой SeqFile непосредственно из HDFS?

ответ

0

Я решал подобные проблемы, кодируя изображения в строку с base64, а затем помещал их все в поле массива объекта JSON на этапе препроцесса.

Кроме того, если вы храните JSON в формате AVRO, то у вас будет преимущество out-of-the-box object-oriented interface на ваш объект в вашем картографе.

0

Возможно, вам понадобится посмотреть CombineFileInputFormat, что поможет вам группировать входы в соответствии с PathFilter, скажем, папку с мудрыми группировками. И каждая группа может быть построена как один Split, который будет обработан одной задачей карты. Поскольку количество заданий карты = количество расколов.

Ваши потребности, похоже, похожи на this link. Пожалуйста, проверьте.

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