转自:http://blog.csdn.net/yangbutao/article/details/8519572
hadoop中可以对文件进行压缩,可以采用gzip、lzo、snappy等压缩算法。
对于lzo压缩,常用的有LzoCodec和lzopCodec,可以对sequenceFile和TextFile进行压缩,但是有一点,对TextFile压缩后,mapred对压缩后的文件默认是不能够进行split操作,需要对该lzo压缩文件进行index操作,生成lzo.index文件,map操作才可以进行split。
/hadoop jar hadoop-lzo.jar com.hadoop.compression.lzo.LzoIndexer xxx.lzo
索引完成后,在lzo压缩文件的相同目录下,生成.lzo.index文件
需要说明的是,
1、不支持对sequenceFile 生成.lzo格式的压缩文件,虽然支持对sequenceFile压缩
只支持对Store as textFile的生成.lzo后缀的文件
2、如果设置LzoCodec,那么就生成.lzo后缀的文件,可以用LzoIndexer 进行支持split的index计算,如果设置LzopCodec,那么生成.lzo_deflate后缀的文件,不支持建立index。