Map Reduce:如何从两个不同的数据集中获取块以使它们成对

时间:2014-04-03 18:28:08

标签: java mapreduce

我想通过以下操作创建Map函数:

第1步:

我有2个数据集RS。我想将两个数据集划分为n个相等大小的块,这可以通过将每个(R/n and S/n)记录放入一个块来完成。

之后:

第2步: 然后,每个可能的块对(一个来自R,一个来自S)在Map阶段结束时被分区为一个桶,这样就可以从Reduce Function中取出一些id作为每个值对的键。 例如<id:(Sij, Ril)>

所以我的问题是:

  1. 如何实施第1步?我可以使用任何已实现的功能吗?
  2. 2.如何在步骤2中专门参考这些数据集,以便从R中取一个块,从S中取一个?

    注意:在main中我定义了两个数据集:

     `FileInputFormat.setInputPaths(conf, new Path(args[0]), new Path(args[1]));`
    

1 个答案:

答案 0 :(得分:0)

只需提供解决方案,我认为有更好的解决方案。

正如我在hadoop-0.20.2中测试的那样,默认情况下,每个Map只读取一个文件。所以只需为Map阶段添加一个计数器,并输出计数器作为键,数据的上下文作为值。 那么第二个问题将非常简单,只需输出具有相同键的值