我正在实现hadoopmapreduce。我对map的输入如下表所示:
客户ID、ip、属性、日期
客户1,ip1,属性1,日期1
客户2,ip2,属性1,日期2
Map器的输出应该是多个文件
文件1:ip-m-00000
键,值
客户1\u ip1,日期1
客户2\u ip2,日期2
文件2:attr-m-00000
键,值
客户1\u属性1,日期1
客户2\u属性1,日期2
我已经安装了hadoop2.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.2.0中没有实现hadoop-2.8.0中的multipleoutputs.write()。
在hadoop-2.2.0中,如果没有multipleoutputs.write()功能,您对如何编写multipleoutput文件有什么想法?
如果此问题需要修改,请您发表意见,不要关闭此问题!
谢谢,上师
1条答案
按热度按时间b1zrtrql1#
上面的代码包含addmultinamedoutput()方法,如果您有多级输出,则使用此方法。改为使用.addnamedoutput()方法,它适用于hadoop-2.2.0。
如果需要attr-m/r-00000,请使用.addnamedoutput()方法。如果需要attr-subattr-m/r-00000,请使用.addmultinamedoutput()方法。