1. 程式人生 > 其它 >列式儲存格式與壓縮演算法

列式儲存格式與壓縮演算法

列式儲存格式與壓縮演算法

列式儲存

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

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

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

檔案結構:

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

支援引擎:

​ 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 檔案如果要切片需要建立索引

不同檔案格式支援的壓縮演算法

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

參考資料

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

- [2] 大資料:Hive - ORC 檔案儲存格式

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