目录
第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性能优化》