В маппере имя файла вы можете получить по этой команде:

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

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

Я использую 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?

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

Ответы на вопрос(3)

Ваш ответ на вопрос