如何在reducer中处理不同的值类型

时间:2015-10-28 22:02:30

标签: java hadoop mapreduce reducers writable

我正在编写一个mapreduce程序,它有2个映射器和1个reducer,我为每个映射器实现了自定义可写数据类型。数据类型或多或少只是一个容器,其中字段是Text / Intwritable值。

因此Mapper 1输出id(文本),M1Writable(我的可写3个字段)

映射器2输出id(文本),M2Writable(我的可写2字段)

reducer将获得可迭代的值

由于两种类型的可写不同,这将如何工作?

如何确定它来自哪个映射器?

由于 我知道这是一个基本问题,但我在寻找答案时遇到了问题。

1 个答案:

答案 0 :(得分:2)

MapReduce中的Mappers始终输出相同的类型。

除非M1Writable和M2Writable有一个共同的父类(例如,MWritable),这是所有映射器的通用输出类型,否则不能在映射器中输出不同的类型。

要知道输出来自哪个映射器,您需要在自定义MWritable对象中记录信息。