我正在实施Hadoop mapreduce。我对地图的输入是一个表格,如下所示:
customerid,IP,Attr,日期
customer1,IP1,attr1,date1
customer2,IP2,attr1,date2
映射器的输出应该是多个文件
文件1:IP-m-00000
键,值
customer1_IP1,date1
customer2_IP2,date2
文件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.2.0中没有实现hadoop-2.8.0中的MultipleOutputs.write()。
有关如何在hadoop-2.2.0中编写multipleOutput文件的任何想法,我们没有MultipleOutputs.write()函数吗?
如果这个问题需要任何修改,请你评论一下,不要关闭这个问题!
谢谢, 大师
答案 0 :(得分:0)
上面的代码包含addMultiNamedOutput()方法,如果您有多级输出,则使用此方法。改为使用.addNamedOutput()方法,它适用于hadoop-2.2.0。
如果您想要Attr-m / r-00000,请使用.addNamedOutput()方法。 如果你想要Attr-SubAttr-m / r-00000,请使用.addMultiNamedOutput()方法。