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

How do you handle different value types in reducer

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

所以 Mapper 1 输出 id(Text), M1Writable (my writable with 3 fields)

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

reducer 会得到一个可迭代的值

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

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

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

MapReduce 中的映射器总是输出相同的类型。

除非 M1Writable 和 M2Writable 具有共同的父级 class(例如 MWritable),这是所有映射器的通用输出类型,否则您不能在映射器之间输出不同的类型。

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