【发布时间】:2011-04-19 12:13:04
【问题描述】:
我正在创建一个程序来分析 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 函数输入类型应该如何?
提前致谢!
【问题讨论】:
-
对于新读者:看看 Hadoop Archives (HAR) 和 Sequence 文件,它们更适合输入到 Hadoop。
标签: java hadoop mapreduce distributed-system