我正在编写一个具有 2 个映射器和 1 个缩减器的 mapreduce 程序,我为每个映射器实现了自定义可写数据类型。数据类型或多或少只是一个容器,其中的字段是文本/可写值。
所以 Mapper 1 输出 id(Text), M1Writable (my writable with 3 fields)
映射器 2 输出 id(文本),M2Writable(我的可写有 2 个字段)
reducer 会得到一个可迭代的值
由于两种可写类型不同,这将如何工作?
我如何确定它来自哪个映射器?
谢谢 我知道这是一个基本问题,但我在寻找答案时遇到了问题。
最佳答案
MapReduce 中的映射器总是输出相同的类型。
除非 M1Writable 和 M2Writable 有一个共同的父类(例如,MWritable),这是所有映射器的共同输出类型,否则您不能在映射器之间输出不同的类型。
要知道输出来自哪个映射器,您需要在自定义 MWritable 对象中记录信息。
关于java - 你如何处理 reducer 中的不同值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33402387/