映射器函数中的 MultipleOutputs Hadoop 版本问题
MultipleOutputs in mapper function Hadoop version issue
我正在实施 Hadoop mapreduce。我对地图的输入是 table,如下所示:
customerid, IP, Attr , Date
customer1, IP1, attr1, date1
customer2, IP2, attr1, date2
映射器的输出应该是多个文件
文件 1:IP-m-00000
key, value
customer1_IP1 , date1
customer2_IP2 , date2
文件 2:Attr-m-00000
key, value
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 对象具有非常容易实现的写入功能。 MultipleOutputs.write() 在 hadoop-2.8.0 中没有在 hadoop-2.2.0 中实现。
关于如何在我们没有 MultipleOutputs.write() 功能的 hadoop-2.2.0 中编写多个输出文件的任何想法?
如果这个问题需要修改,请评论,不要关闭问题!
谢谢,
大师
上面的代码包含了addMultiNamedOutput()方法,如果你有多级输出就用到这个方法。请改用 .addNamedOutput() 方法,它适用于 hadoop-2.2.0.
如果需要 Attr-m/r-00000 ,请使用 .addNamedOutput() 方法。
如果你想要 Attr-SubAttr-m/r-00000 使用 .addMultiNamedOutput() 方法。
我正在实施 Hadoop mapreduce。我对地图的输入是 table,如下所示:
customerid, IP, Attr , Date
customer1, IP1, attr1, date1
customer2, IP2, attr1, date2
映射器的输出应该是多个文件
文件 1:IP-m-00000
key, value
customer1_IP1 , date1
customer2_IP2 , date2
文件 2:Attr-m-00000
key, value
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 对象具有非常容易实现的写入功能。 MultipleOutputs.write() 在 hadoop-2.8.0 中没有在 hadoop-2.2.0 中实现。
关于如何在我们没有 MultipleOutputs.write() 功能的 hadoop-2.2.0 中编写多个输出文件的任何想法?
如果这个问题需要修改,请评论,不要关闭问题!
谢谢, 大师
上面的代码包含了addMultiNamedOutput()方法,如果你有多级输出就用到这个方法。请改用 .addNamedOutput() 方法,它适用于 hadoop-2.2.0.
如果需要 Attr-m/r-00000 ,请使用 .addNamedOutput() 方法。 如果你想要 Attr-SubAttr-m/r-00000 使用 .addMultiNamedOutput() 方法。