前言
Hive中对中间数据或最终数据都会做压缩处理,以提高吞吐量和性能。
通常压缩比高的占用空间小,但解压缩慢,反之亦然,常用的压缩格式有:GZIP、BZIP2、Snappy
压缩方式 | 压缩后大小 | 压缩速度 | 是否可分隔 |
---|---|---|---|
GZIP | 中 | 中 | 否 |
BZIP2 | 小 | 慢 | 是 |
Snappy | 大 | 快 | 是 |
Snappy因为解压缩速度很快,并且可以进行分隔,是大数据存储中最常用的压缩方式。
起因
今天跑批处理的时候,读取HDFS中的Snappy文件的时候报错了,这边使用的是org.apache.hadoop.hive.serde2.JsonSerDe的解析方式,解析TEXTFILE存储的JSON文件,压缩方式是Snappy,就想查看一下Snappy里面的具体文件内容。
解决问题
1.使用命令行查看
hadoop fs -text /XXX/XXX.snappy
复制代码
使用-text命令可以直接查看文件,或直接使用命令输出到文件中进行查看。
缺点是不方便进行一些复杂的处理,或者输出统计结果。
2.使用代码解析
使用代码解析后,就可以进行读取并处理,也可以输出统计结果,或异常数据可以直接定位。
CompressionCodec有两个方法可以用于压缩或解压缩数据。要想对正在被