CarbonData 文件结构

CarbonData 文件由一系列称为 blocklets 组成的;除此之外,在文件头部和尾部还包含许多必要的信息,比如模式、偏移量以及索引等。这些数据全部存储于 HDFS 之上。

当在内存中建立索引的时候,文件页脚信息将会被读取;索引可用于优化后续所有查询的扫描和处理。

理解 CarbonData 文件结构

  • Block : 它和 HDFS 块类似,CarbonData 为每个数据块创建一个文件,用户可以在创建表时指定 TABLE_BLOCKSIZE。每个文件都包含 File Header, Blocklets 和 File Footer。
  • CarbonData File Structure

  • File Header : 它包含 CarbonData 文件的版本号,列的模式以及模式的更新时间戳。
  • File Footer : 它包含了文件里面有多少行数据,段信息(segmentinfo),所有 blocklets 的信息以及索引。你可以从下面的图表中找到详细信息。
  • Blocklet : blocklet 由行分组组成, blocklet 的大小是可配置的,默认大小是 64MB, Blocklet 里面包含每列的 Column Page groups 信息。
  • Column Page Group : 存储同一列的数据,又进一步分为很多的页,以保证文件的连续性。
  • Page : 它包含同一列的数据,行的数量固定为 32000。
  • CarbonData File Format

    每个页面包含三种类型的数据

  • Data Page: 包含列的编码数据。
  • Row ID Page (可选): 包含行 ID 的映射信息,当数据页面被存储为倒排索引时使用。
  • RLE Page (可选): 包含一些额外的元数据,当数据页面使用 RLE 编码时使用。