В маппере имя файла вы можете получить по этой команде:
даю программу для анализа файлов 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?
Заранее спасибо!