IT虾米网

java之Hadoop 2.2之合并 Reducer 输出

何贤刚 2023年09月08日 编程语言 179 0

我的 Map/Reduce 作业输出表格的行

Key1 5 
Key2 8 
Key3 4 
Key1 7 
Key3 3 

我想汇总这些结果以按键获得值的总和。 所以像这样:

Key1 12 (5 + 7) 
Key2 8 
Key3 7 (4 + 3) 

天真的方法是简单地将另一个 Map/Reduce 作业链接到第一个作业之后,但它效率低下,因为你的 I/O 比必要的多两倍,开销等。所以我想避免这种解决方案。

最好的方法可能是 map -> reduce1 -> reduce2,其中 reduce1 的输出是 reduce2 的输入。不幸的是,这似乎是不可能的(例如参见 Chaining Multi-Reducers in a Hadoop MapReduce job)。 我也看过ChainReducer但它也无济于事,因为它不允许多个减少步骤。

那么你会怎么做呢?我可以使用 Hadoop 2.X 中的新功能吗?

谢谢。

请您参考如下方法:

没有 mapper 就不可能使用多个 reducer。如果可能的话,我建议您应该尝试将两个 map-reduce 逻辑组合在一个 map-reduce 作业中。否则身份映射器将是唯一的解决方案。


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!