¿Cómo obtener Nombre de archivo / Contenido de archivo como entrada de clave / valor para MAP cuando se ejecuta un trabajo de Hadoop MapReduce?
Estoy creando un programa para analizar archivos PDF, DOC y DOCX. Estos archivos se almacenan en HDFS.
Cuando comienzo mi trabajo de MapReduce, quiero que la función de mapa tenga el Nombre de archivo como clave y el Contenido binario como valor. Luego quiero crear un lector de flujo que pueda pasar a la biblioteca del analizador de PDF. ¿Cómo puedo lograr que el par clave / valor para la fase de mapa sea nombre de archivo / contenido de archivo?
Estoy usando Hadoop 0.20.2
Este es un código antiguo que inicia un trabajo:
public static void main(String[] args) throws Exception {
JobConf conf = new JobConf(PdfReader.class);
conf.setJobName("pdfreader");
conf.setOutputKeyClass(Text.class);
conf.setOutputValueClass(IntWritable.class);
conf.setMapperClass(Map.class);
conf.setReducerClass(Reduce.class);
conf.setInputFormat(TextInputFormat.class);
conf.setOutputFormat(TextOutputFormat.class);
FileInputFormat.setInputPaths(conf, new Path(args[0]));
FileOutputFormat.setOutputPath(conf, new Path(args[1]));
JobClient.runJob(conf);
}
Sé que hay otros tipos de formato de entrada. ¿Pero hay uno que hace exactamente lo que quiero? La documentación me parece bastante vaga. Si hay uno disponible, ¿cómo deberían verse los tipos de entrada de la función Mapa?
¡Gracias por adelantado