我正在编写一个mapreduce程序,它有2个映射器和1个reducer,我为每个映射器实现了自定义可写数据类型。数据类型或多或少只是一个容器,其中字段是Text / Intwritable值。
因此Mapper 1输出id(文本),M1Writable(我的可写3个字段)
映射器2输出id(文本),M2Writable(我的可写2字段)
reducer将获得可迭代的值
由于两种类型的可写不同,这将如何工作?
如何确定它来自哪个映射器?
由于 我知道这是一个基本问题,但我在寻找答案时遇到了问题。
答案 0 :(得分:2)
MapReduce中的Mappers始终输出相同的类型。
除非M1Writable和M2Writable有一个共同的父类(例如,MWritable),这是所有映射器的通用输出类型,否则不能在映射器中输出不同的类型。
要知道输出来自哪个映射器,您需要在自定义MWritable对象中记录信息。