在 Hadoop
中,我可以设置一个分组比较器来确定在单个 reduce 调用中将哪些键(及其值)组合在一起。但是 reduce 的签名中只有一个键,所以如果我决定将基于一个属性的复合键组合在一起,那么在 reduce 调用中会向 reducer 提供什么键?
最佳答案
这取决于它是如何实现的。从issue的描述看这实际上导致了分组比较器的实现,可以明确地说这是将被带到 reduce 方法的键的第一次出现。
假设您的 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}
);
这是使用分组比较器后的预期结果。
关于hadoop - 来自分组比较器的代表键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19328852/