【发布时间】:2013-07-11 09:59:39
【问题描述】:
假设我有一个矩阵乘法的代码。我希望每个节点的映射器输出将由一个减速器获取,即。一个完整的映射器输出文件的密钥将相同,与另一个节点的密钥不同。例如。如果一个 Mapper 文件以键 1 输出键/值对,则另一个 Mapper 将键/值对输出为键 2,依此类推。 我知道这个例子可能无法做到这一点,但是如果我可以将密钥输出为某个特定的数据节点 ID 或其他东西?如,输出中的键可能是给定数据节点的某些特定 ID。有没有办法做到这一点?
基本上我希望一个映射器的所有输出以某种方式进入一个减速器,这可以通过给它们全部一个键来实现,我还想要一些并行性以便映射器输出分布通过集群,所以我希望每个密钥都是唯一的。 如果输入不是这样组织的,如何将这个一个键分配给某些数据?
(如果需要更多信息,请指出。感谢您的帮助)
【问题讨论】:
-
您可以设计自己的自定义分区器并确保正确的键进入正确的减速器。查看一些使用 mapreduce 进行二级排序的示例,了解自定义分区器的工作原理。
-
问题是如何生成这些密钥。一个映射器的一个键,另一个依赖于映射器输出所在节点的另一个键?