5. 文本接口文件的压缩问题

2.4 文本接口文件的压缩问题

压缩对文件存储来说是十分有好处的,尤其对BI行业数据来说,数据文件存在着大量的空格、空值或像编码那样高度类同的值,已经流行多年的压缩算法都可以大大的缩小文件的体积,下面的例子就是对接口M05027进行压缩后的情况,可以看到即使在使用了gzip的—fast选项的情况下,压缩率也可以达到接近90%。
etl@smdw:/backup/etl_data/data_input/data_097> gzip -l M05027*
compressed uncompressed ratio uncompressed_name
145826986 1415320527 89.7% M0502720120401010001.AVL
145535887 1418224895 89.7% M0502720120401010002.AVL
144824738 1417017114 89.8% M0502720120401010003.AVL
144975622 1417011013 89.8% M0502720120401010004.AVL
93578173 911604460 89.7% M0502720120401010005.AVL
153934971 1421769063 89.2% M0502720120401020001.AVL
154698176 1423946348 89.1% M0502720120401020002.AVL
154830925 1424391491 89.1% M0502720120401020003.AVL
68355961 627877947 89.1% M0502720120401020004.AVL
153204386 1423785446 89.2% M0502720120401030001.AVL
153521463 1425381522 89.2% M0502720120401030002.AVL
107293560 995988428 89.2% M0502720120401030003.AVL
152169932 1422314883 89.3% M0502720120401040001.AVL
152432192 1423927651 89.3% M0502720120401040002.AVL
135588314 1269189574 89.3% M0502720120401040003.AVL
2060771286 19437750362 89.4% (totals)
etl@smdw:/backup/etl_data/data_input/data_097>
M05027这个接口文件是BSS侧经过先分包后传输给我们的(压缩是我们自己做的):
etl@smdw:/backup/etl_data/data_input/data_097 > ls -l M05027.gz
-rw-r--r-- 1 etl gpadmin 145826986 2012-05-28 22:12 M0502720120401010001.AVL.gz
-rw-r--r-- 1 etl gpadmin 145535887 2012-05-28 22:12 M0502720120401010002.AVL.gz
-rw-r--r-- 1 etl gpadmin 144824738 2012-05-28 22:13 M0502720120401010003.AVL.gz
-rw-r--r-- 1 etl gpadmin 144975622 2012-05-28 22:13 M0502720120401010004.AVL.gz
-rw-r--r-- 1 etl gpadmin 93578173 2012-05-28 22:13 M0502720120401010005.AVL.gz
-rw-r--r-- 1 etl gpadmin 153934971 2012-05-28 22:40 M0502720120401020001.AVL.gz
-rw-r--r-- 1 etl gpadmin 154698176 2012-05-28 22:41 M0502720120401020002.AVL.gz
-rw-r--r-- 1 etl gpadmin 154830925 2012-05-28 22:41 M0502720120401020003.AVL.gz
-rw-r--r-- 1 etl gpadmin 68355961 2012-05-28 22:41 M0502720120401020004.AVL.gz
-rw-r--r-- 1 etl gpadmin 153204386 2012-05-28 23:05 M0502720120401030001.AVL.gz
-rw-r--r-- 1 etl gpadmin 153521463 2012-05-28 23:05 M0502720120401030002.AVL.gz
-rw-r--r-- 1 etl gpadmin 107293560 2012-05-28 23:05 M0502720120401030003.AVL.gz
-rw-r--r-- 1 etl gpadmin 152169932 2012-05-28 23:29 M0502720120401040001.AVL.gz
-rw-r--r-- 1 etl gpadmin 152432192 2012-05-28 23:30 M0502720120401040002.AVL.gz
-rw-r--r-- 1 etl gpadmin 135588314 2012-05-28 23:30 M0502720120401040003.AVL.gz
etl@smdw:/backup/etl_data/data_input/data_097 >
对于gz文件GP是可以直接读取的,
例如使用可读外部表的时候指定LOCATION为:
LOCATION ('gpfdist://smdw-1:9091/ M05027
.AVL.gz')
Gpfdist内部有专门的算法来读取gz压缩文件,速度只是略低于未压缩的情况;同时gpfdist也能读取bz2类型的压缩文件,但速度要比gz的要更慢一些;但是bz2压缩比率更高,更加利于网路传输以及磁盘上的大量存储。
要注意的是:不论是gzip还是bzip2,它们在压缩的过程中都要消耗令人心痛的硬件资源和最宝贵的时间资源。所以无数人常常哀叹:文件是否要压缩这个问题确实是一个问题啊。
如果有足够强大的主机或集群,压缩问题也可能不是个问题。现在的云计算就很流行把文件压缩到云里。
现在有一种压缩叫LZO,根据一些使用过的人介绍,它的压缩比没有gzip和bzip2那么高,但它的压缩速度非常快,它是一种压缩速度快得让人流泪的东西!目前HADOOP里面是可以直接应用的,不知道GP会不会在新的版本中加入这个应用,哎,它快得让人流泪啊……

你可能感兴趣的:(5. 文本接口文件的压缩问题)