列式存儲格式與壓縮算法


列式存儲格式與壓縮算法

列式存儲

在OLAP系統中使用列式存儲可以在存儲和查詢兩方面取得優勢:

  • 存儲:由於每列的數據類型是相同的,列式存儲可以達到更好的壓縮比
  • 查詢:需要查詢那些列才去掃描讀取,在寬表及數據量大時優勢更為明顯

常見的列式存儲格式有:Parquet、ORC(optimized RCFile)、RCFile(Row Columnar)

文件結構:

​ ORC和Parquet在存儲時都是先分行組然后分列存儲的

image-20210708180211081

支持引擎:

​ Parquet:Apache Hive 、Cloudera Impala、Apache Spark 等

​ ORC:Hive、MapReduce、Spark 等

ORC 詳解:大數據:Hive - ORC 文件存儲格式
Parquet 詳解:為什么我們選擇 Parquet

一句話總結:Parquet 支持復雜的數據嵌套式結構,但不支持數據刪改及 ACID

壓縮算法

壓縮格式 壓縮比 壓縮速率 解壓速率 多文件 splitable native 工具 hadoop自帶
gzip 13.4% 21 MB/s 118 MB/s gzip
bzip2 13.2% 2.4MB/s 9.5MB/s bzip2
lzo 20.5% 135 MB/s 410 MB/s lzop
snappy 22.2% 172 MB/s 409 MB/s

*lzo 文件如果要切片需要建立索引

不同文件格式支持的壓縮算法

image-20210708180651993

​ 當文件較大且不持支切片時,該文件將只能由一個 map task 讀取並處理,導致處理時間過長,所以當有大文件需要讀取處理的時候更多選擇的是 Lzo 和 Parquet 的組合。

參考資料

- [1] Hadoop 壓縮格式 gzip/snappy/lzo/bzip2 比較與總結

- [2] 大數據:Hive - ORC 文件存儲格式

- [3] 為什么我們選擇 Parquet


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM