Iceberg数据湖初探(一)

简介

iceberg是一种适用于大规模数据集的开放数据湖表格式,介于数据存储与数据查询中间的表格式定义。方便大数据集的读写,为数据湖分析提供通用的数据管理,支持多类大数据引擎:Spark、Hive、Trino、Flink、Impala等

支持特性

  • Schema evolution
  • Hidden partitioning
  • Partition layout evolution
  • Time travel
  • snapshot Meta文件管理

可靠性与性能

  • Scan planning : 可以快速查找查询所需要的为难,过滤不需要的文件数据
  • Advanced filtering
  • Works with any cloud store
  • Serializable isolation
  • Multiple concurrent writers

snapshot

快照管理表元数据+数据,expire_snapshots 管理过期快照。可使用分支和标签管理用例

  • 历史标签

snapshot

1
2
--每周保留 1 个快照,持续 1 个月。这可以通过标记每周快照并将标记保留时间设置为一个月来实现。快照将被保留,分支引用本身将保留 1 周。
ALTER TABLE prod.db.table CREATE TAG `EOW-01` AS OF VERSION 7 RETAIN 7 DAYS;
  • 使用审核分支来验证写入工作流程的示例
1
2
3
4
5
6
7
8
ALTER TABLE db.table SET TBLPROPERTIES (
    'write.wap.enabled'='true'
);
ALTER TABLE db.table CREATE BRANCH `audit-branch` AS OF VERSION 3 RETAIN 7 DAYS;
-- WAP Branch write
SET spark.wap.branch = audit-branch
INSERT INTO prod.db.table VALUES (3, 'c');
CALL catalog_name.system.fast_forward('prod.db.table', 'main', 'audit-branch');

维护:

  • expireSnapshots过期快照删除

  • 元数据删除:每次对表的变更都会对元数据/文件产生新的元数据,

属性说明
write.metadata.delete-after-commit.enabledWhether to delete old tracked metadata files after each table commit
write.metadata.previous-versions-maxhe number of old metadata files to keep
  • deleteOrphanFiles删除孤儿文件
  • rewriteDataFiles合并文件重写
  • rewriteManifests重写元数据文件

Metrics Reporting

  • ScanReport
  • CommitReport
  • Available Metrics Reporters

roadmap

  • Core-General
    • 多表事务
    • 视图支持
    • CDC支持
    • 副本标签分支
    • 即时文件合并
    • 删除文件合并
    • Z-order排序/
    • Upsert支持
  • Clients
    • Python
    • Rust
    • Go
  • Spec V2
  • Spec V3
Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy