Iceberg 概述
# 概念
Apache Iceberg 是一种用于大型分析数据集的开放 Table Format(表格式)。专为大型表设计,单表可以处理 PB 级的数据。Iceberg 旨在解决最终一致的云对象存储中的正确性问题,Iceberg 可以在没有分布式 SQL 的情况下读取 PB 级别的表。
Table Format 是数据库系统在实现层面上的一个抽象概念,是数据存储的一种模型,其中定义了表的元数据信息以及数据文件的组织形式、统计信息以及上层引擎读取和写入的相关 API,与其相对应的是 File Format。
Iceberg 介于数据文件之上,计算之下,在数据仓库中的位置如下:
提示
本系列文章以 Iceberg 0.13.1 版本为主,后续版本部分特性可能会有所变更。
# 特点
- 支持 add、drop、update 和 rename 操作。
- 隐藏分区(Hidden Partition)可以避免开发人员的错误操作。
- 分区规则可以根据数据量或查询模式的变化而更新。
- 支持使用完全相同的表快照的可重现查询,或者让用户轻松检查更改。
- 版本回滚允许将表重置为任意时刻的状态,以快速纠正问题
# 解决什么问题
- 实现批流一体,统一存储、统一 Schema、统一血缘、统一查询。
- 支持流式写入,增量读取。
- 解决 Hive 中小文件过多的问题。
- 支持 update 和 delete 操作。
- 事务保证。
- 相对 Hive 而言,更高效的扫描计划可以加快查询。
- 相对 Hive 而言,可以有效降低 NameNode 的 list 请求压力。
上次更新: 2023/11/01, 03:11:44