目录
第02章 存储和压缩格式 2
2.1 存储和压缩格式对比 2
2.2 查询效果测试 3
2.3 查询效果测试带shuffle 3
第02章 存储和压缩格式
存储和压缩格式简介
Spark SQL表存储的数据量都特别大,因此存储格式要考虑查询性能写入性能和存储成本。而orc存储格式是一种列式存储,在查询写入时比较快,而存储成本也比较低。
这是我们在1T(未压缩)规模上做的存储和查询性能测试。
2.1 存储和压缩格式对比
文件存储格式\文件压缩格式 |
None(GB) |
Snappy(GB) |
Gzip(GB) |
Lzo(GB) |
Text(行式存储) |
1843.2 |
431.0 |
210.8 |
387.8 |
Parquet(列式存储) |
1126.4 |
406.3 |
228.5 |
374.5 |
Orc(列式存储) |
839.8 |
373.8 |
由上图看出,压缩效果text-gzip > parquet-gzip > orc-snappy > parquet-lzo > text-lzo > ,
parquet-gzip相比text未压缩时存储成本降低了88%,orc-snappy相比text未压缩时的存储成本降低了80%,parquet-gzip相比orc-snappy节约存储成本达37%。
2.2 查询效果测试
简单对各种存储格式的表进行count(1)查询
文件存储格式\文件压缩格式count(1) |
None(秒) |
Snappy(秒) |
Gzip(秒) |
Lzo(秒) |
text |
226.052 |
299.195 |
334.322 |
96.353 |
parquet |
16.377 |
16.331 |
14.602 |
42.33 |
orc |
21.485 |
27.722 |
由上图可看出,查询效果parquet-gzip > parquet-snappy > orc-snappy,
parquet-gzip相比于text未压缩时减少了93.6%的时间消耗,orc-snappy相比text未压缩时减少了88%的时间消耗,parquet-gzip相比orc-snappy减少了47%的时间消耗。
2.3 查询效果测试带shuffle
通过测试count(distinct request_id)
文件存储格式\文件压缩格式count(distinct ) |
None(秒) |
Snappy(秒) |
Gzip(秒) |
Lzo(秒) |
text |
330.326 |
556.032 |
493.851 |
221.09 |
parquet |
94.967 |
34.360 |
35.619 |
98.005 |
orc |
69.452 |
27.722 |
由上图可看出,查询效果 orc-snappy > parquet-snappy > parquet-gzip ,
orc-snappy相比text未压缩时减少了92%的时间消耗,parquet-gzip减少了89%的时间消耗,orc-snappy相比parquet-gzip减少了22%的时间消耗。
来自视频:《Spark SQL性能优化》