在Hadoop
中,我可以设置一个分组比较器来确定在单个 reduce 调用中将哪些键(及其值)组合在一起。但是 reduce 的签名中只有一个键,所以如果我决定基于一个属性将复合键组合在一起,那么在 reduce 调用中会向 reducer 提供什么键?
问问题
85 次
1 回答
2
这取决于它是如何实施的。从实际导致分组比较器实现的问题的描述来看,可以明确地说,它是第一次出现的 key 将被带到 reduce 方法。
假设您的减少输入如下所示:
A1, V1
A2, V2
A3, V3
B1, V4
B2, V5
而不是接到电话以减少看起来像:
reduce(A1,
{V1}
); reduce(A2,
{V2}
); reduce(A3,
{V3}
); reduce(B1,
{V4}
); reduce(B2,
{V5}
);
您可以将分组比较器定义为仅比较字母并最终得到:
reduce(A1,
{V1,V2,V3}
); reduce(B1,
{V4,V5}
);
这是使用分组比较器后的预期结果。
于 2013-10-12T13:19:12.630 回答