В настоящее время я пишу распределенное приложение, которое анализирует PDF-файлы с помощью Hadoop MapReduce.Входные данные для задания MapReduce - это тысячи файлов PDF (которые в основном варьируются от 100 КБ до ~ 2 МБ), а выходные данные - это набор проанализированных текстовых файлов.
Для целей тестирования первоначально я использовал WholeFileInputFormat
, предоставленный Томом Уайтом Hadoop.Подробное руководство книга, которая предоставляет один файл на одну карту.Это работало хорошо с небольшим количеством входных файлов, однако, это не работает должным образом с тысячами файлов по очевидным причинам.Единая карта для задачи, выполнение которой занимает около секунды, неэффективна.
Итак, я хочу отправить несколько файлов PDF в одну карту (например, объединить несколько файлов в один фрагмент, размер блока HDFS которого составляет ~ 64 МБ).Я узнал, что CombineFileInputFormat
полезно для моего случая.Однако я не могу придумать, как расширить этот абстрактный класс, чтобы я мог обрабатывать каждый файл и его имя файла как одну запись значения ключа.
Любая помощь приветствуется.Спасибо!