分组比较器的代表键

时间:2013-10-11 23:42:55

标签: hadoop

Hadoop中,我可以设置一个分组比较器来确定哪个键(及其值)在一个reduce调用中被聚合在一起。但是reduce的签名只有一个关键,所以如果我决定根据一个属性将复合键组合在一起,那么在reduce调用中会给reducer提供什么键呢?

1 个答案:

答案 0 :(得分:2)

这取决于它的实施方式。从实际导致分组比较器实现的issue的描述看,可以明显地说,它是第一次出现在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}
);

这是使用分组比较器后的预期结果。