Iceberg 演化
# Schema 演化
其实我更愿意称之为 Scheme Evolution,而不是表结构演变。更改表结构在 Hive 中更改表结构是一个非常重的操作,代价比较昂贵。比如简单的 rename、修改分区等操作,都需要重新建表重新写数据。但是 Iceberg 支持就地更改 Schema,并可以保证数据准确性。
Iceberg 支持的 Schema 修改操作:
- Add:在表或嵌套结构中新增列
- Drop:从表或嵌套结构中删除列
- Rename:重命名表或嵌套结构中的字段名
- Update:修改表或嵌套结构中的字段类型
- Reorder:修改表或嵌套结构中的字段顺序
# Partition 演化
更改分区是元数据级别的操作,不会像 Hive 一样有重写数据的操作。当修改 Iceberg 表中的分区规则时,修改之前的数据还是按照以前的分区方式存储,而修改之后的数据才会按照新的规则存储,修改前后的分区元数据是分开存储的,这就意味着在同一个表中允许存在多种分区策略。
比如 2008 年的数据是按照 month 做分区的,但是从 2009 开始用 day 做分区。查询过程中 Iceberg 会自动裁剪文件。
# Sort Order 演化
更改排序规则和更改分区规则类似,修改前后的顺序依然按照各自规则各自存储,互不影响。
上次更新: 2023/11/01, 03:11:44