您的位置:首页 > 其它

mapreduce输出时按情况使用不同的文件名输出结果

2014-07-17 00:00 381 查看
摘要: mapreduce输出时按情况使用不同的文件名输出结果

输出时按情况使用不同的文件名输出结果

这种情况也可以重写格式化输出类实现。

这里说一种简单的方法:

1)、先在提交JOB之前,设置多行输出别名,设置其别名,输出类型,Key类型,value类型

MultipleOutputs.addNameOutput(job,"corpInfo",TextOutputFormat.class,Text.class,Text.class);
MultipleOutputs.setCounterEnabled(job,true);//重设别名输出后,其计算器要设置才能显示输出数
注:设置的别名只是标识输出格式,key格式,value格式的一个类变量。即表示,如果你要输出的文件有多种不同的格式标识,则设置多个别名以标示输出格式。

2)、在map中声明输出

private MultipleOutputs outs;

3)在map的setup方法中实例化输出类:
@Override
protected void setup(Context context){
outs=new MultipleOutputs(context);
}

4)在map的cleanup方法中关闭输出类:
public void cleanup(Context context) throws IOException,InterruptedException{
super.cleanup(Context);
outs.close;

}

5)在map中使用

outs.write("corpInfo",NullWritable.get(),new Text("aaa"),"result");
参数为:输入别名,KEY,VALUE,文件名
当要输出的数据其输出格式都一致时,可以用相同的别名进行输出成不同的文件名,文件名一般会加一些后缀,一般为机器节点标识值,如result0001

注:上面是MAP的输出,reduce也是一样的:声明输出类,实例化,使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐