• 存储+压缩
  • orc、parquet是一种存储方式

列式存储

image.png

orc

在读取文件时,会到文件尾部读 PostScript,从里面解析到 File Footer长度,再读FileFooter,从里面解析到各个Stripe信息,再读各个Stripe。
image.png

parquet

  • parquet文件包含数据和元数据,所以parquet是自解析的。
  • 行组(row group): 先把表按照每XX行分割成多个行组。通常Parquet 数据会按照Block大小设置行组的大小,所以一个行组由一个mapper处理。
  • 列块(column chunk):一个行组中每一列保存为一个列块。列块内的值都是相同类型的
  • 页(page):一个列块能分为多个页
  1. 一个文件中可以存储多个行组,文件的首位都是该文件的Magic Code,用于校验它是否是一个Parquet文件
  2. Footer length 记录了文件元数据的大小。
  3. 从而计算出Footer元数据的偏移量,文件的元数据中包括每一个行组的元数据信息和该文件存储数据的 Schema 信息。
  4. 除了文件中每一个行组的元数据,每一页的开始都会存储该页的元数据

image.png

压缩

image.png