【问题标题】:MultipleOutputs in mapper function Hadoop version issue映射器函数Hadoop版本问题中的MultipleOutputs
【发布时间】:2017-05-17 18:04:27
【问题描述】:

我正在实施 Hadoop mapreduce。我对 map 的输入是一个表格,如下所示:

客户 ID、IP、属性、日期

客户1,IP1,属性1,日期1

客户2、IP2、属性1、日期2

映射器的输出应该是多个文件

文件 1:IP-m-00000

键,值

客户1_IP1,日期1

客户2_IP2,日期2

文件 2:Attr-m-00000

键,值

customer1_attr1 , date1

customer2_attr1 , date2

我已经安装了 hadoop 2.2.0,我正在使用以下代码

MultipleOutputs.addMultiNamedOutput (job, "IP", TextOutputFormat.class, Text.class, Text.class); //  in the Driver.class
MultipleOutputs.getCollector("IP", context).collect(txtKey, txtValue); // in the Mapper.class

我的 txtKey 是 customerid_$Attribute,txtValue 是日期。

我在另一台个人机器上安装了 2.8.0,MultipleOutputs 对象具有非常容易实现的写入功能。 hadoop-2.8.0中的MultipleOutputs.write()在hadoop-2.2.0中没有实现。

关于如何在我们没有 MultipleOutputs.write() 功能的 hadoop-2.2.0 中编写多个输出文件的任何想法?

如果此问题需要任何修改,请您发表评论,不要关闭问题!

谢谢, 大师

【问题讨论】:

    标签: hadoop mapreduce multipleoutputs


    【解决方案1】:

    上面的代码包含 addMultiNamedOutput() 方法,这个方法用于多级输出。改用 .addNamedOutput() 方法,它适用于 hadoop-2.2.0。

    如果你想要 Attr-m/r-00000 ,请使用 .addNamedOutput() 方法。 如果你想要 Attr-SubAttr-m/r-00000 使用 .addMultiNamedOutput() 方法。

    【讨论】:

      猜你喜欢
      • 2011-12-29
      • 2014-06-09
      • 2011-04-12
      • 2013-07-18
      • 2022-11-14
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      • 2011-06-27
      相关资源
      最近更新 更多