Как получить имя файла / содержимое файла в качестве ввода ключ / значение для MAP при выполнении задания Hadoop MapReduce?

Я создаю программу для анализа файлов PDF, DOC и DOCX. Эти файлы хранятся в HDFS.

Когда я запускаю задание MapReduce, я хочу, чтобы функция карты имела имя файла в качестве ключа и двоичное содержимое в качестве значения. Затем я хочу создать средство чтения потоков, которое можно передать библиотеке парсера PDF. Как я могу добиться того, чтобы пара ключ / значение для этапа сопоставления была именем файла / содержимым файла?

Я использую Hadoop 0.20.2

Это более старый код, запускающий задание:

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

Я знаю, что существуют и другие типы входных форматов. Но есть ли тот, который делает именно то, что я хочу? Я нахожу документацию довольно расплывчатой. Если таковой имеется, то как должны выглядеть типы ввода функции Map?

Заранее спасибо!

5
задан Christophe 19 April 2011 в 12:13
поделиться