SPARK表存储格式在HDFS性能比较######
不管是Impala表抑或spark表,数据存储都可以是HDFS媒介。HDFS是大数据存储通用的文件系统,据别强大功能,本文列举下spark表存储在HDFS时,不同存储格式性能体现。
spark表数据基本存储格式包括:ORC、PARQUET、TEXTFILE、SEQUENCEFile,其它如RCFile AVRO不再这里分析。其中ORC、PARQUET、SEQUENCEFile以二进制形式存储,Text以文本形式存储。为了减少空间、和传输时带宽,Text支持若干种压缩格式,spark表在冯文数据时,HDFS底层Api自动解析压缩文件。这在一定程度上解决了Text占用存储空间和传输带宽问题。
本文评估以上文件格式在存储空间和spark访问效率关系。预支条件:spark表4列数据,以Text存储大小220M。以特定场景评估,可能存在偏差。
统计表行数的语句执行时间对比:#####
0: connect:18000/> select count(1) from test_orc;
+-----------+--+
| count(1) |
+-----------+--+
| 16777216 |
+-----------+--+
1 row selected (4.02 seconds)
0: connect:18000/> select count(1) from test; //parquet
+-----------+--+
| count(1) |
+-----------+--+
| 16777216 |
+-----------+--+
1 row selected (1.65 seconds)
0: connect:18000/> select count(1) from test_txt; //txt
+-----------+--+
| count(1) |
+-----------+--+
| 16777216 |
+-----------+--+
1 row selected (5.667 seconds)
0: connect:18000/> select count(1) from test_txt; //gzip
+-----------+--+
| count(1) |
+-----------+--+
| 16777216 |
+-----------+--+
1 row selected (2.861 seconds)
0: connect:18000/> select count(1) from test_txt; //bzip2
+-----------+--+
| count(1) |
+-----------+--+
| 16777216 |
+-----------+--+
1 row selected (4.363 seconds)
访问时间对比:parquet > gzip > orc > bzip2 > text
文件空间对比:####
使用
hadoop fs -du -h ..... //获取占用空间
12.1 M /test //parquet
1.1 M /test_orc //orc
220 M /test_txt //txtfile
2.5 M /test_txt //gzip 压缩级别6
1.7 M /test_txt //gzip 压缩级别9 最高压缩,压缩速度最慢
93.2 K /test_txt //bzip2 压缩级别6, 200M数据压缩时长 60s 左右。
存储空间: bzip2 > orc > gzip > parquet > text
在性能和存储之间,对全表字段查询,ORC是较好的选择。bzip2在压缩级别为6时,完成压缩耗时如此长,得到如此高的压缩比也是惊喜。
为了权衡存储空间和数据传输的带宽,ORC和GZIP是项目的首选。
网友评论