2012-02-24 17 views
5

Tengo que analizar archivos PDF, que se encuentran en HDFS en un programa Map Reduce en Hadoop. Entonces obtengo el archivo PDF de HDFS como Entradas de entrada y tiene que ser analizado y enviado a la clase Mapper. Para implementar este InputFormat, he pasado por este link. ¿Cómo se pueden analizar y dividir estas divisiones de entrada en formato de texto?Análisis de archivos PDF en Hadoop Map Reduce

+0

Esta respuesta puede ser parte de lo que está buscando: http://stackoverflow.com/a/9298965/698839 –

Respuesta

6

Procesamiento de archivos PDF en Hadoop se puede hacer extendiendo FileInputFormat Clase. Deje que la clase que lo extiende sea WholeFileInputFormat. En la clase WholeFileInputFormat sobrescribe el método getRecordReader(). Ahora cada pdf se recibirá como División de entrada individual. Entonces estos divisiones individuales se pueden analizar para extraer el texto. Este link proporciona un claro ejemplo de cómo ampliar FileInputFormat.

1

Depende de sus divisiones. Creo (podría estar equivocado) que necesitará cada PDF como un todo para poder analizarlo. Hay bibliotecas de Java para hacer esto, y Google sabe dónde están.

Dado que, tendrá que usar un enfoque donde tenga el archivo como un todo cuando esté listo para analizarlo. Suponiendo que quieras hacer eso en el mapeador, necesitarías un lector que entregue los archivos completos al mapeador. Puede escribir su propio lector para hacer esto, o tal vez ya haya uno. Posiblemente pueda construir un lector que escanee el directorio de archivos PDF y pase el nombre de cada archivo como la clave en el asignador y los contenidos como el valor.

+0

La implementación del formato WholeFileInput en lugar del formato CombileFileInput resuelve el problema. Por lo tanto, en el formato WholeFileInput, cada archivo PDF se recibirá como una sola división de entrada. Entonces estas divisiones de entrada se pueden analizar por completo. – WR10

+0

Además, al tratar de analizar todo el archivo como una sola división, ¿no será un cuello de botella el tamaño del archivo que se lee? Considere un archivo de TB en tamaño y si hay un solo archivo, entonces debe analizarse obligatoriamente en una sola máquina. ¿Cómo superamos este cuello de botella? – WR10

+0

Bueno, primero averigüe si realmente es el caso que necesita el PDF en su totalidad para poder analizarlo. Si no, eso soluciona el problema. Suponiendo que no puede dividirlo, entonces creo que debe pasar los nombres de los archivos como divisiones, y leer directamente desde HDFS en su asignador. –

Cuestiones relacionadas