写点什么

数据湖(八):Iceberg 数据存储格式

作者:Lansonli
  • 2022-10-23
    广东
  • 本文字数:1105 字

    阅读完需:约 4 分钟

数据湖(八):Iceberg数据存储格式

Iceberg 数据存储格式

一、Iceberg 术语

  • data files(数据文件):

数据文件是 Apache Iceberg 表真实存储数据的文件,一般是在表的数据存储目录的 data 目录下,如果我们的文件格式选择的是 parquet,那么文件是以“.parquet”结尾,例如:

00000-0-root_20211212192602_8036d31b-9598-4e30-8e67-ce6c39f034da-job_1639237002345_0025-00001.parquet 就是一个数据文件。

Iceberg 每次更新会产生多个数据文件(data files)。

  • Snapshot(表快照):

快照代表一张表在某个时刻的状态。每个快照里面会列出表在某个时刻的所有 data files 列表。data files 是存储在不同的 manifest files 里面,manifest files 是存储在一个 Manifest list 文件里面,而一个 Manifest list 文件代表一个快照。

  • Manifest list(清单列表):

manifest list 是一个元数据文件,它列出构建表快照(Snapshot)的清单(Manifest file)。这个元数据文件中存储的是 Manifest file 列表,每个 Manifest file 占据一行。每行中存储了 Manifest file 的路径、其存储的数据文件(data files)的分区范围,增加了几个数文件、删除了几个数据文件等信息,这些信息可以用来在查询时提供过滤,加快速度。

  • Manifest file(清单文件):

Manifest file 也是一个元数据文件,它列出组成快照(snapshot)的数据文件(data files)的列表信息。每行都是每个数据文件的详细描述,包括数据文件的状态、文件路径、分区信息、列级别的统计信息(比如每列的最大最小值、空值数等)、文件的大小以及文件里面数据行数等信息。其中列级别的统计信息可以在扫描表数据时过滤掉不必要的文件。

Manifest file 是以 avro 格式进行存储的,以“.avro”后缀结尾,例如:8138fce4-40f7-41d7-82a5-922274d2abba-m0.avro。

二、表格式 Table Format

Apache Iceberg 作为一款数据湖解决方案,是一种用于大型分析数据集的开放表格式(Table Format),表格式可以理解为元数据及数据文件的一种组织方式。Iceberg 底层数据存储可以对接 HDFS,S3 文件系统,并支持多种文件格式,处于计算框架(Spark、Flink)之下,数据文件之上。

下面介绍下 Iceberg 底层文件组织方式,下图是 Iceberg 中表格式,s0、s1 代表的是表 Snapshot 信息,每个表示当前操作的一个快照,每次 commit 都会生成一个快照 Snapshot,每个 Snapshot 快照对应一个 manifest list 元数据文件,每个 manifest list 中包含多个 Manifest 元数据文件,manifest 中记录了当前操作生成数据所对应的文件地址,也就是 data file 的地址。

基于 snapshot 的管理方式,Iceberg 能够获取表历史版本数据、对表增量读取操作,data files 存储支持不同的文件格式,目前支持 parquet、ORC、Avro 格式。

关于 Iceberg 表数据底层组织详细信息,可关注后面得文章,会详细讲解的。

发布于: 刚刚阅读数: 4
用户头像

Lansonli

关注

微信公众号:三帮大数据 2022-07-12 加入

CSDN大数据领域博客专家,华为云享专家、阿里云专家博主、腾云先锋(TDP)核心成员、51CTO专家博主,全网六万多粉丝,知名互联网公司大数据高级开发工程师

评论

发布
暂无评论
数据湖(八):Iceberg数据存储格式_数据湖_Lansonli_InfoQ写作社区