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

标签 java hadoop mapreduce reducers writable

我正在编写一个具有 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/

相关文章:

Hadoop MapReduce 遍历 reduce 调用的输入值

java - 如何使 kotlin 中的主要 java 方法更简单?

hadoop mapreduce 只执行一个mapper

java - 下面的: arrayName[x]++; work and what does it output in the following context?怎么办

hadoop - 除 select * 外的任何配置单元查询挂起

c# - 关于使用Hadoop.WebHDFSClient时文件创建的403,尽管能够在HDFS中创建文件夹

hadoop - 使用 ArrayWritables 时出现问题

Hadoop MapReduce WordCount 示例缺陷?

java - selenium - 我可以获取元素的文本,但无法单击其链接

java - 从手机流式传输视频