Мне нужно разобрать файлы PDF, которые находятся в HDFS, в программе уменьшения карты в Hadoop. Итак, я получаю PDF-файл из HDFS в виде разделений ввода, и его нужно проанализировать и отправить в класс Mapper. Для реализации этого InputFormat я перешел по этой ссылке . Как можно проанализировать эти входные разбиения и преобразовать их в текстовый формат?
Разбор файлов PDF в Hadoop Map Reduce
Ответы (2)
Обработка PDF-файлов в Hadoop может выполняться путем расширения FileInputFormat Класс. Пусть класс, расширяющий его, будет WholeFileInputFormat. В классе WholeFileInputFormat вы переопределяете метод getRecordReader(). Теперь каждый файл PDF будет приниматься как отдельный входной фрагмент. Затем эти отдельные фрагменты можно проанализировать для извлечения текста. Эта ссылка дает наглядный пример понимания того, как расширить FileInputFormat.
Это зависит от ваших сплитов. Я думаю (может ошибаться), что вам понадобится каждый PDF-файл целиком, чтобы разобрать его. Для этого есть Java-библиотеки, и Google знает, где они находятся.
Учитывая это, вам нужно будет использовать подход, при котором у вас есть файл в целом, когда вы будете готовы его проанализировать. Предполагая, что вы хотите сделать это в картографе, вам понадобится ридер, который будет передавать целые файлы в картограф. Вы можете написать свой собственный ридер, чтобы сделать это, или, возможно, он уже есть. Возможно, вы могли бы создать программу чтения, которая сканирует каталог PDF-файлов и передает имя каждого файла в качестве ключа в средство сопоставления, а содержимое - в качестве значения.