Iceberg2:特点

Iceberg2:特点

Iceberg分区与隐藏分区(Hidden Partition)

Iceberg支持分区来加快数据查询。在lceberg中设置分区后,可以在写入数据时将相似的行分组,在查询时加快查询速度。Iceberg中可以按照年、月、日和小时粒度划分时间戳组织分区。
在Hive中也支持分区,但是要想使分区能加快查询速度,需要在写SQL时指定对应的分区条件过滤数据,在Iceberg中写SQL查询时不需要再SQL中特别指定分区过滤条件,Iceberg会自动分区,过滤掉不需要的数据。
在Elceberg中分区信息可以被隐藏起来,Iceberg的分区字段可以通过一个字段计算出来,在建表或者修改分区策略之后,新的数据会自动计算所属于的分区,在查询的时候同样不用关心表的分区是什么字段,只需要关注业务逻辑,Iceberg会自动过滤不需要的分区数据。
正是由于Iceberg的分区信急和表数据存储目泉是独立的,使得Iceberg的表分区可以被修改,而且不会涉及到数据迁移。

Iceberg表演化(Table Evolution)

在Hive分区表中,如果把一个按照天分区的表改成按小时分区,那么没有办法在原有表上进行修改,需要创建一个按照小时分区的表,然后把数据加载到此表中。
Iceberg支持就地表演化,可以通过SQL的方式进行表级别模式演进,例如:更改表分区布局。Icebergi进行以上操作时,代价极低,不存在读出数据重新写入或者迁移数据这种费时费力的操作

模式演化(Schema Evolution)

Iceberg支持以下几种Schemal的演化:
  • ADD:向表或者嵌套结构增加新列。
  • DrOp:从表或嵌套结构中移除列。
  • Rename:重命名表中或者嵌套结构中的列。
  • Update:将复杂结构(Struct、Map<Key,Value>,Iist)中的基本类型扩展类型长度,比如:tinyint修改成int。
  • Reorder:改变列的顺序,也可以改变嵌套结构中字段的排序顺序。
 

分区演化(Partition Evolution)

Iceberg分区可以
notion image
 

列顺序演化(Sort Order Evolution)