我正在创建一个程序来分析 PDF、DOC 和 DOCX 文件。这些文件存储在 HDFS 中。
当我开始我的 MapReduce 工作时,我希望 map 函数将文件名作为键,将二进制内容作为值。然后我想创建一个流阅读器,我可以将它传递给 PDF 解析器库。如何实现 Map Phase 的键/值对是文件名/文件内容?
我正在使用 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 函数输入类型应该如何?
提前致谢!