InputFormat描述的是MR的输入规范,而OutputFormat描述的是MR的输出规范。目的是设置MR的作业输出格式。

FileOutputFormat包括了FIleOutputFormat,DBOutputFormat,NullOutputFormat,FilterOutputFormat等。

首先看FileOutputFormat,常见的输出模式如

1.文本输出TextOutputFormat

默认的输出格式是TextOutputFormat,它把每条记录写为文本行。它的键和值可以是任意类型,因为TextOutputFormat调用toString()方法把它们转换为字符串。

2.SequenceFileOutputFormat
SequenceFileOutputFormat将它的输出写为一个序列化文件。如果输出需要作为后续 MapReduce任务的输入,这便是一种好的输出格式,因为它的格式紧凑,很容易被压缩。

然后对于NullOutputFormat来说,它继承自OutputFormat,舍弃所有输出的KV。

对于DBOutputFormat,接受来自map的KV后,通过RecordWriter使用批量的Sql查询将key写入数据库。

对于自定义的Outputformat,我们需要继承Outputformat(如继承FileOutpurFormat、DBOutputFormat等),然后重写RecordWriter与write方法。

参考https://www.cnblogs.com/asker009/p/11440866.htmlhttps://www.jianshu.com/p/c571b35713b1