hive parquet表启用压缩

1、首先表必须是要确保是parquet表,之后的语句才会有效。因为是对hive中的parquet表进行压缩。

2、
SET parquet.compression=SNAPPY;
SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
SET mapred.output.compression.type=BLOCK;

该设置其实只对插入数据有效,对查询是默认有效的。

CREATE TABLE t_r_cust_cont0720_snappy(
ecif_id string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS PARQUET
TBLPROPERTIES ("parquet.compression"="SNAPPY"); ---表级的压缩

3、检查压缩是否有效
desc formatted t_r_cust_cont0720_snappy;

压缩后的表:

4、经过计算压缩比为:1:6.压缩后的数据为原来的六分之一。

————————————————————————————
虽然从数据文件上看来是进行了压缩,但是不知道为什么里面的compressd依然为NO。


这里面我之前有个错误。没有分清totaldatasize和rawdatasize。简单理解就是rawdatasize是原始文件大小,即压缩前;totaldatasize是实际存储文件大小,即压缩后。

下面对一张表进行压缩前的情况

下面是压缩后的情况

比较明显的就是使用snappy压缩后文件数量降低了,同时totaldatasize降低了一倍,但是rawdatasize一致。同时compresed始终为NO,只能通过parquet.compression为Snappy辨别表是否为压缩表。

接着我使用了压缩表进行脚本测试。性能和压缩前几乎一致,同时还减少了存储空间。

blocksize为128m 不压缩 23mins

blocksize为128m 只压缩新表 26mins

blocksize为128m 压缩 24mins

发表评论

电子邮件地址不会被公开。 必填项已用*标注