我想使用以下操作创建一个 Map 函数:
第 1 步:
我有 2 个数据集R
和S
.我想将两个数据集划分为 n 个大小相等的块,这可以通过将每个(R/n and S/n
)条记录放入一个块来完成。
然后:
第 2 步:然后,在 Map 阶段结束时,每个可能的块对(一个来自 R,一个来自 S)被分区到一个桶中,以便可以从 Reduce 函数中获取作为输入,并为每个值对提供一些 id 作为键。例如,将被<id:(Sij, Ril)>
所以我的问题是:
- 如何实施步骤 1?是否有任何已实现的功能可供我使用?
2.如何在步骤 2 中具体引用这些数据集,以便我可以从 R 中获取一个块,从 S 中获取一个块?
注意:在主要情况下,我像这样定义两个数据集:
`FileInputFormat.setInputPaths(conf, new Path(args[0]), new Path(args[1]));`
只需提供一个解决方案,我认为有一些更好的解决方案。
正如我在hadoop-0.20.2中测试的那样,默认情况下,每个Map只读取一个文件。因此,只需为Map阶段添加一个计数器,并将计数器输出为键,将数据的上下文输出为值。那么第二个问题将非常简单,只需使用相同的键输出值即可