Como obter o nome do arquivo / conteúdo do arquivo como entrada de chave / valor para o MAP ao executar uma tarefa Hadoop MapReduce?

Estou criando um programa para analisar arquivos PDF, DOC e DOCX. Esses arquivos são armazenados no HDFS.

Quando inicio meu trabalho no MapReduce, desejo que a função map tenha o nome do arquivo como chave e o conteúdo binário como valor. Desejo criar um leitor de fluxo que possa passar para a biblioteca do analisador de PDF. Como posso obter que o par de chave / valor para a fase do mapa seja nome do arquivo / conteúdo do arquivo?

Estou usando o Hadoop 0.20.2

Este é um código antigo que inicia um trabalho:

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);
}

Sei que existem outros tipos de formato de entrada. Mas existe alguém que faz exatamente o que eu quero? Acho a documentação bastante vaga. Se houver um disponível, como devem ser os tipos de entrada da função Mapa?

Desde já, obrigado

questionAnswers(3)

yourAnswerToTheQuestion