Разбор файлов PDF в Hadoop Map Reduce

Мне нужно разобрать файлы PDF, которые находятся в HDFS, в программе уменьшения карты в Hadoop. Итак, я получаю PDF-файл из HDFS в виде разделений ввода, и его нужно проанализировать и отправить в класс Mapper. Для реализации этого InputFormat я перешел по этой ссылке . Как можно проанализировать эти входные разбиения и преобразовать их в текстовый формат?


person WR10    schedule 24.02.2012    source источник
comment
Этот ответ может быть частью того, что вы ищете: stackoverflow.com/a/9298965/698839   -  person Matt D    schedule 25.02.2012


Ответы (2)


Обработка PDF-файлов в Hadoop может выполняться путем расширения FileInputFormat Класс. Пусть класс, расширяющий его, будет WholeFileInputFormat. В классе WholeFileInputFormat вы переопределяете метод getRecordReader(). Теперь каждый файл PDF будет приниматься как отдельный входной фрагмент. Затем эти отдельные фрагменты можно проанализировать для извлечения текста. Эта ссылка дает наглядный пример понимания того, как расширить FileInputFormat.

person WR10    schedule 25.02.2012

Это зависит от ваших сплитов. Я думаю (может ошибаться), что вам понадобится каждый PDF-файл целиком, чтобы разобрать его. Для этого есть Java-библиотеки, и Google знает, где они находятся.

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

person Don Branson    schedule 24.02.2012
comment
Реализация формата WholeFileInput вместо формата CombileFileInput решает проблему. Таким образом, в формате WholeFileInput каждый файл PDF будет получен как одно входное разделение. Затем эти входные разбиения могут быть полностью проанализированы. - person WR10; 25.02.2012
comment
Кроме того, при попытке проанализировать весь файл как единое целое, не будет ли размер читаемого файла узким местом? Рассмотрим файл размером ТБ, и если есть один файл, то его необходимо анализировать в обязательном порядке на одной машине. как нам преодолеть это узкое место? - person WR10; 27.02.2012
comment
Ну, сначала выясните, действительно ли вам нужен PDF-файл целиком, чтобы разобрать его. Если нет, это устраняет проблему. Предполагая, что вы не можете разбить его, я думаю, вам нужно передавать имена файлов как разбиения и читать непосредственно из HDFS в вашем картографе. - person Don Branson; 27.02.2012