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