【问题标题】:Hadoop data join from two files - How to force mappers to read specific files来自两个文件的 Hadoop 数据连接 - 如何强制映射器读取特定文件
【发布时间】:2014-06-29 07:18:05
【问题描述】:

我正在尝试在 hadoop 中编写数据连接 Map Reduce 作业。我觉得我已经很接近了,但在阻止 map1 输入到 map2 时遇到问题。

我有两个映射器和一个 reduce,我试图强制 Map1 从一个文件中读取,同时强制 Map2 从另一个文件中读取。我想解析reducer中的结果来格式化join输出。

我知道默认情况下,在作业中链接映射器时,作业的输出将成为下一个作业的输入,我知道这可以被覆盖但不成功。确认map1中的数据正在输入map2。

这就是我认为我应该指定单个映射器的输入路径的方式:

        //Setting Configuration for map2
        JobConf map2 = new JobConf(false);
        String[] map2Args = new GenericOptionsParser(map2, args).getRemainingArgs();
        FileInputFormat.setInputPaths(map2, new Path(map2Args[1]));
        ChainMapper.addMapper(  conf,
                                Map2.class,
                                LongWritable.class,
                                Text.class,
                                Text.class,
                                Text.class,
                                true,
                                map2);

conf 是主要的作业配置,args 由 3 个值组成。第一个值是输入文件,第二个值是输入文件,第三个值是预期的输出文件。

在处理 hadoop 中的数据连接和多个映射器时,为单个映射器指定输入路径的正确方法是什么?

【问题讨论】:

标签: java hadoop mapreduce hdfs


【解决方案1】:

这种情况可以通过使用多输入格式来解决。使用这种输入格式,我们可以读取两个不同格式的文件,并将两者组合的结果用于 reducer 作业。

下面的链接中给出了概念和示例的简要说明。

https://github.com/subbu-m/MultipleInputFormat

我希望这些信息对您有所帮助。

【讨论】:

    猜你喜欢
    • 2014-03-18
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多