hadoop - 来自分组比较器的代表键

标签 hadoop

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/

相关文章:

hadoop - Hadoop 1.0.0 中的可拆分 Bz2 输入

hadoop - 如何维护Hadoop中的变量?

python - 为什么在调用 impala.dbapi.connect() 时出现“"TypeError: ' 模块对象不可调用”?

hadoop - 在hbase中导出表

hadoop - Terasort如何工作

apache-spark - 如何在具有不同内存和核心数量的集群上调整 spark 作业

hadoop - 安装 HBase 后 HMaster 进程不在 hadoop 多节点集群上运行

python - 在 python 中为 Hadoop Map Reduce 创建自定义可写键/值类型?

hadoop - 如果我在Hive中查询分区表,将运行多少mapreduce作业

java - mapreduce 作业的进度