hadoop生态系统学习之路(四)MR支持的输入文件格式以及输出文件格式

在上一篇博文中,笔者执行mr时,输入文件是.txt格式的。其实,还可以是压缩格式。
为什么要使用压缩格式呢?文件压缩可以减少存储文件所需要的磁盘空间,并加速数据在网络和磁盘上的传输。
然后,MR又是怎么判断你的输入目录中的文件是压缩还是非压缩的呢?MR通过CompressionCodecFactory来推断CompressionCodec时,如果输入文件是压缩的,那么在根据文件扩展名推断出相应的codec后,MapReducer会在读取文件时自动解压缩文件。
另外,还可以指定MR作业的输出为压缩格式,代码如下:

//将reduce输出文件压缩.gz
 FileOutputFormat.setCompressOutput(job, true);  //job使用压缩  
 FileOutputFormat.setOutputCompressorClass(job, GzipCodec.class); //设置压缩格式

hdfs支持多种压缩格式,不过.gz这种格式应该是比较常用的。
下面,我们来试试。
首先,在hdfs中准备压缩文件,如下:
这里写图片描述
然后,执行yarn jar mr-demo-0.0.1-SNAPSHOT-jar-with-dependencies.jar /test/input /test/output,运行完毕后,查看输出目录,可以看到:
这里写图片描述
由于我指定了两个reducer,所以会产生两个压缩文件。
好了,关于hdfs的压缩格式就粗略的说说了,大家如果想使用其它的压缩格式,可以去查阅下相关的资料。

你可能感兴趣的:(大数据,hadoop生态系统学习之路)