3

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

所以 Mapper 1 输出 id(Text), M1Writable (我的 writable 有 3 个字段)

Mapper 2 输出 id(Text), M2Writable (我的 writable 有 2 个字段)

reducer 将获得一个可迭代的值

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

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

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

4

1 回答 1

2

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

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

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

于 2015-10-28T22:56:06.120 回答