hadoop数据从两个文件连接-如何强制Map程序读取特定文件

wooyq4lh  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(265)

我试图在hadoop中编写一个数据连接Mapreduce作业。我觉得我很接近,但有一个问题,阻止map1喂养map2。
我有两个Map器和一个reduce,我试图强制map1从一个文件读取,同时强制map2从另一个文件读取。我想在reducer中解析结果以格式化连接输出。
我知道在默认情况下,链接作业中的Map器时,一个作业的输出将是下一个作业的输入,我知道这可以被覆盖,但不成功。来自map1的数据被确认为输入map2。
这就是我应该如何指定单个Map器的输入路径:

  1. //Setting Configuration for map2
  2. JobConf map2 = new JobConf(false);
  3. String[] map2Args = new GenericOptionsParser(map2, args).getRemainingArgs();
  4. FileInputFormat.setInputPaths(map2, new Path(map2Args[1]));
  5. ChainMapper.addMapper( conf,
  6. Map2.class,
  7. LongWritable.class,
  8. Text.class,
  9. Text.class,
  10. Text.class,
  11. true,
  12. map2);
  13. ``` `conf` 是主作业配置和 `args` 由3个值组成。第一个值是输入文件,第二个值是输入文件,第三个值是预期的输出文件。
  14. 在hadoop中处理数据连接和多个Map器时,为不是第一个Map器的单个Map器指定输入路径的正确方法是什么?
t8e9dugd

t8e9dugd1#

这种情况可以通过使用多输入格式来解决。使用这种输入格式,我们可以读取两个不同格式的文件,两个文件合并后的结果将转到reducer作业。
下面的链接中给出了概念和示例的简要描述。
https://github.com/subbu-m/multipleinputformat
我希望这些信息有帮助。

相关问题