CarbonData 列式存儲文件結構

CarbonData 文件結構

CarbonData 文件由一系列稱為 blocklets 組成的;除此之外,在文件頭部和尾部還包含許多必要的信息,比如模式、偏移量以及索引等。這些數據全部存儲於 HDFS 之上。

當在內存中建立索引的時候,文件頁腳信息將會被讀取;索引可用於優化後續所有查詢的掃描和處理。

理解 CarbonData 文件結構

  • Block : 它和 HDFS 塊類似,CarbonData 為每個數據塊創建一個文件,用戶可以在創建表時指定 TABLE_BLOCKSIZE。每個文件都包含 File Header, Blocklets 和 File Footer。
CarbonData 列式存儲文件結構

  • File Header : 它包含 CarbonData 文件的版本號,列的模式以及模式的更新時間戳。
  • File Footer : 它包含了文件裡面有多少行數據,段信息(segmentinfo),所有 blocklets 的信息以及索引。你可以從下面的圖表中找到詳細信息。
  • Blocklet : blocklet 由行分組組成, blocklet 的大小是可配置的,默認大小是 64MB, Blocklet 裡面包含每列的 Column Page groups 信息。
  • Column Page Group : 存儲同一列的數據,又進一步分為很多的頁,以保證文件的連續性。
  • Page : 它包含同一列的數據,行的數量固定為 32000。
CarbonData 列式存儲文件結構

每個頁面包含三種類型的數據

  • Data Page: 包含列的編碼數據。
  • Row ID Page (可選): 包含行 ID 的映射信息,當數據頁面被存儲為倒排索引時使用。
  • RLE Page (可選): 包含一些額外的元數據,當數據頁面使用 RLE 編碼時使用。


分享到:


相關文章: