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的压缩格式就粗略的说说了,大家如果想使用其它的压缩格式,可以去查阅下相关的资料。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值