java—在mapreduce中使用不同的inputformatclass调用多个Map器

kxxlusnw  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(253)

我想用三个字母写一个代码 Mapper 其中两个将处理 ".csv" 其他文件是 ".xml" . 我已经写信了 XmlInputFormat 为了 .xml 从此处格式化
现在我想知道我应该输入什么

job.setInputFormatClass(...);

以及我应该添加哪些来提供文件路径。

TextInputFormat.addInputPath(...)
 TextOutputFormat.setInputPath(...)

或者

TextInputFormat.addInputPath(...)
TextOutputFormat.setInputPath(...)
xlpyo6sf

xlpyo6sf1#

您应该考虑编写两个Map器,一个处理程序 .csv 文件和其他 .xml . 但是,Map器和 key-valuesame type ,供单个减速机加工。
下面是一个使用 org.apache.hadoop.mapred.lib.MultipleInputs 同样地:

MultipleInputs.addInputPath(jobConf, 
                     new Path(csvFilePath),       
                     SequenceFileInputFormat.class, 
                     CSVProcessingMapper.class);
MultipleInputs.addInputPath(jobConf, 
                     new Path(xmlFilePath), 
                     XmlInputFormat.class, 
                     XMLProcessingMapper.class);

在这里 CSVProcessingMapper.class 以及 XmlInputFormat.classCSV 以及 XML 正在处理Map程序。您可以为不同的输入类型创建尽可能多的Map器。同样地 SequenceFileInputFormat.class 以及 XmlInputFormat.class 类是相应的输入格式类。

相关问题