天天看点

如何在MAP/REDUCE中不检查输出路径?

前言

如果在REDUCE中并没有涉及到生成HDFS文件,比如只是将一些数据写入REDIS,那么每次都要提供一个不存在的OUTPUT,真是挺麻烦的,有没有机制可以让MAP/REDUCE作业不要检查输出路径?

检查输出路径的机制

经常,我们的输出格式是这样的:

job.setOutputFormatClass(TextOutputFormat.class);

跟踪下TextOutputFormat,扫描下其中的方法,发现没有检查输出路径的方法。

向上检查TextOutputFormat的父类FileOutputFormat其中的方法,发现如下:

<a href="http://s3.51cto.com/wyfs02/M01/6F/8A/wKioL1WfiDiAUQJpAAJrER7Zhmk294.jpg" target="_blank"></a>

可以发现我们熟悉的提示文字“Output directory XXX already exists”

那么如果我们提供一个类MyTextOutputFormat extends TextOutFormat 并覆盖这个方法,就可以达到不用检查输出路径了:

<a href="http://s3.51cto.com/wyfs02/M00/6F/8E/wKiom1WflirAqfvbAAKc_uIX4pY185.jpg" target="_blank"></a>

然后,设置下:

job.setOutputFormatClass(MyTextOutputFormat.class);即可。

本文转自zfz_linux_boy 51CTO博客,原文链接:http://blog.51cto.com/zhangfengzhe/1673024,如需转载请自行联系原作者

继续阅读