Tag: 分布式系统

如何在运行Hadoop MapReduce作业时将文件名/文件内容作为MAP的键/值输入?

我正在创建一个分析PDF,DOC和DOCX文件的程序。 这些文件存储在HDFS中。 当我启动MapReduce作业时,我希望map函数将Filename作为键,将Binary Contents作为值。 然后我想创建一个流阅读器,我可以将其传递给PDF解析器库。 如何实现Map Phase的键/值对是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); } 我知道还有其他inputformat类型。 但有没有一个完全符合我的要求? 我发现文档很模糊。 如果有一个可用,那么Map函数输入类型应该如何? 提前致谢!