Пользовательский двоичный ввод - Hadoop - PullRequest
0 голосов
/ 27 февраля 2012

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

Это двоичные файлы, которые содержат большой заголовок с метаданными, за которыми следуют данные набора изображений.Информация о том, как читать изображения, также содержится в заголовке (например, number_of_images, number_of_pixels_x, number_of_pixels_y, bytes_per_pixel, поэтому после байтов заголовка первые [number_of_pixels_x*number_of_pixels_y*bytes_per_pixel] являются первым изображением, затем вторым и т. Д.].

Что такое хороший формат ввода для файлов такого типа? Я подумал о двух возможных решениях:

  1. Преобразовать их в файлы последовательности, поместив метаданные в заголовок файла последовательности и иметь пары длякаждое изображение. В этом случае я могу получить доступ к метаданным из всех картографов?
  2. Написать пользовательские InputFormat и RecordReader и создать разбиения для каждого изображения, помещая метаданные в распределенный кеш.

Я новичок в Hadoop, поэтому, может быть, я что-то упускаю. Какой подход вы считаете лучшим? Есть ли другой способ, которого мне не хватает?

1 Ответ

0 голосов
/ 28 февраля 2012

Не зная ваших форматов файлов, первый вариант кажется лучшим вариантом.Используя файлы последовательности, вы можете использовать множество инструментов, связанных с SequenceFile, для повышения производительности.Однако есть две вещи, которые меня беспокоят при таком подходе:

  1. Как вы получите ваши файлы .mrc в формате .seq?
  2. Вы упомянули, что заголовок большойэто может снизить производительность SequenceFiles

Но даже с учетом этих проблем, я думаю, что представление ваших данных в SequenceFile - лучший вариант.

...