大数据知识体系
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
  • 数据湖介绍
  • Iceberg

    • Iceberg 概述
    • Iceberg 数据类型
    • Iceberg 演化
      • Schema 演化
      • Partition 演化
      • Sort Order 演化
    • Iceberg 分区
    • Iceberg 文件组织形式
    • Iceberg Spark 入门
    • Iceberg Spark DDL
    • Iceberg Spark DQL
    • Iceberg Spark SQL 存储过程
  • Hudi

    • Hudi 概述
  • 数据湖
  • Iceberg
Will
2022-03-12
目录

Iceberg 演化

# Schema 演化

其实我更愿意称之为 Scheme Evolution,而不是表结构演变。更改表结构在 Hive 中更改表结构是一个非常重的操作,代价比较昂贵。比如简单的 rename、修改分区等操作,都需要重新建表重新写数据。但是 Iceberg 支持就地更改 Schema,并可以保证数据准确性。

Iceberg 支持的 Schema 修改操作:

  • Add:在表或嵌套结构中新增列
  • Drop:从表或嵌套结构中删除列
  • Rename:重命名表或嵌套结构中的字段名
  • Update:修改表或嵌套结构中的字段类型
  • Reorder:修改表或嵌套结构中的字段顺序

# Partition 演化

更改分区是元数据级别的操作,不会像 Hive 一样有重写数据的操作。当修改 Iceberg 表中的分区规则时,修改之前的数据还是按照以前的分区方式存储,而修改之后的数据才会按照新的规则存储,修改前后的分区元数据是分开存储的,这就意味着在同一个表中允许存在多种分区策略。

比如 2008 年的数据是按照 month 做分区的,但是从 2009 开始用 day 做分区。查询过程中 Iceberg 会自动裁剪文件。

partition evolution

# Sort Order 演化

更改排序规则和更改分区规则类似,修改前后的顺序依然按照各自规则各自存储,互不影响。

上次更新: 2023/11/01, 03:11:44

← Iceberg 数据类型 Iceberg 分区→

Theme by Vdoing | Copyright © 2022-2023 Will 蜀ICP备2022002285号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式