SparkSQL 存储优化

问题一:为什么说列式存储优化在sparksql场景中是非常重要?到底是优化CPU还是IO?

 

观点一:CPU是瓶颈,伴随着NVMe SSD和AEP等新硬件的性能提升,IO已经比CPU快,IO不再是瓶颈,优化的重点应该是CPU,很多公司团队基于CPU做了很多优化。更多存算分离架构基于此诞生。比如阿里云Hologress团队负责人金晓军做了一个分享,核心优化点就是各种相关向量化计算优化,尽可能榨干CPU性能。像Spark的shuffle,热数据,中小型数据等场景,充分利用好SSD等硬件,性能将会大幅提升。

观点二:CPU的优化空间很大。但是在Spark这种海量离线场景中,基于总成本(TCO)的考虑,你不可能都用最新的硬件,大量历史数据还是存放在HDD中。在这些历史数据的检索计算中,IO是瓶颈。那么减少IO是更好的优化方向。

本片文章主要介绍SparkSQL这种海量数据离线场景,存储优化的一些方法。

 

问题二:那么存储优化,主要有什么优化方式?

(1)存储格式优化

由行式存储转为列式存储。

(未完待续)

(2)数据压缩

基于列存特点和数据本身特点,设计合理的数据格式进行压缩。

(未完待续)

(3)向量化读取

火山模型,代码生成技术,向量化计算

(未完待续)

(4)物化

包括延迟物化,物化列等等

(未完待续)

(5)各种join优化

(未完待续)

你可能感兴趣的:(大数据,spark,数据库,大数据)