数据湖-Iceberg-源码学习-API-Catalog 设计
一、概述
Iceberg Catalog API 用来保存和查找表的元数据,比如 Schema、 属性信息等。
二、设计
2.1. Metadata Layer
Iceberg 数据表每一次的修改后的状态都会在 Metadata Layer 层中生成一个 Snapshot (s0,s1) 文件,Snapshot 文件中包含一个 Manifest List, List 中存储了当前的 Snapshot 状态是由哪些 Manifest 文件组成。每个 Manifest 的文件会指向到真实数据的存储文件 Date File(一股是 parquet 格式)。
2.2. Catalog API
Catalog API 良好的抽象来对接数据存储和元数据管理
如上图所示,Catalog 主要提供几方面的抽象。
- 数据 IO: File IO 都是可以定制,包括读写和删除;
- 元数据管理
https://zhuanlan.zhihu.com/p/389904827?utm_id=0
2.2.1. Catalog 接口
Iceberg 为了支持多种 Catalog,定义了自己的 Catalog 规范,接口 org.apache.iceberg.catalog
当引擎层(Flink/Spark)需要使用表元数据时便会通过 Catalog 进行加载,各个引擎定义了自己的 Catalog 规范(接口),Iceberg 为了和引擎层进行对接实现了引擎层定义的接口,如 FlinkCatalog/SparkCatalog。
2.2.2. SparkCatalog
Iceberg 为了和 Spark 对接,实现了 Spark 关于 Catalog 规范 SparkCatalog。
引用本站文章
数据湖-Iceberg-源码学习-Query Engines-Spark-读数据-集成-Catalog 设计
Joker
2.2.3. FlinkCatalog
Iceberg 为了和 Spark 对接,实现了 Spark 关于 Catalog 规范 FlinkCatalog。
引用本站文章
数据湖-Iceberg-源码学习-Query Engines-Flink-读数据-集成-Catalog 设计
Joker
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joker!
评论
ValineTwikoo