在Hadoop
中,我可以设置一个分组比较器来确定哪个键(及其值)在一个reduce调用中被聚合在一起。但是reduce的签名只有一个关键,所以如果我决定根据一个属性将复合键组合在一起,那么在reduce调用中会给reducer提供什么键呢?
答案 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}
);
这是使用分组比较器后的预期结果。