Apache Iceberg on AWS - 理解Iceberg表格式

通过Glue ETL Job将Aurora数据导入到Iceberg表后,我们可以在对应的S3桶中看到如下数据目录:

其中,metadata目录存放了Iceberg表的元数据,data存放实际的数据文件。

Metadata数据解析

元数据 JSON 文件

  • 00000-a4fe4565-e128-4f1c-aea6-18471c4e8748.metadata.json
  • 00001-5fc33466-9cd7-4d02-87c9-71e4cc2c1627.metadata.json

这些是 Iceberg 表的元数据文件,以数字序列开头(00000, 00001),表示元数据版本。它们包含表的模式定义、分区信息、快照历史等。序列号越大,表示越新的元数据版本。

让我们来看下具体的metadata内容:

json 复制代码
{
  "format-version" : 2,
  "table-uuid" : "163526bc-3eef-4fb9-b92b-0ccb37a90117",
  "location" : "s3://iceberg-workshop-datalake-7arcfcyrvanr/public_customers",
  "last-sequence-number" : 1,
  "last-updated-ms" : 1752391363612,
  "last-column-id" : 5,
  "current-schema-id" : 0,
  "schemas" : [ {
    "type" : "struct",
    "schema-id" : 0,
    "fields" : [ {
      "id" : 1,
      "name" : "customer_id",
      "required" : false,
      "type" : "int",
      "doc" : ""
    }, {
      "id" : 2,
      "name" : "whisker_name",
      "required" : false,
      "type" : "string",
      "doc" : ""
    }, {
      "id" : 3,
      "name" : "email",
      "required" : false,
      "type" : "string",
      "doc" : ""
    }, {
      "id" : 4,
      "name" : "paw_phone",
      "required" : false,
      "type" : "string",
      "doc" : ""
    }, {
      "id" : 5,
      "name" : "membership_date",
      "required" : false,
      "type" : "timestamp",
      "doc" : ""
    } ]
  } ],
  "default-spec-id" : 0,
  "partition-specs" : [ {
    "spec-id" : 0,
    "fields" : [ ]
  } ],
  "last-partition-id" : 999,
  "default-sort-order-id" : 0,
  "sort-orders" : [ {
    "order-id" : 0,
    "fields" : [ ]
  } ],
  "properties" : {
    "write.parquet.compression-codec" : "zstd"
  },
  "current-snapshot-id" : 5279933414298446801,
  "refs" : {
    "main" : {
      "snapshot-id" : 5279933414298446801,
      "type" : "branch"
    }
  },
  "snapshots" : [ {
    "sequence-number" : 1,
    "snapshot-id" : 5279933414298446801,
    "timestamp-ms" : 1752391363612,
    "summary" : {
      "operation" : "append",
      "spark.app.id" : "spark-application-1752391336970",
      "added-data-files" : "10",
      "added-records" : "10",
      "added-files-size" : "17225",
      "changed-partition-count" : "1",
      "total-records" : "10",
      "total-files-size" : "17225",
      "total-data-files" : "10",
      "total-delete-files" : "0",
      "total-position-deletes" : "0",
      "total-equality-deletes" : "0",
      "engine-version" : "3.5.4-amzn-0",
      "app-id" : "spark-application-1752391336970",
      "engine-name" : "spark",
      "iceberg-version" : "Apache Iceberg 4f0aa51 (commit 4f0aa5157785b36d43eaaeb48d870fdb4a57d768)"
    },
    "manifest-list" : "s3://iceberg-workshop-datalake-7arcfcyrvanr/public_customers/metadata/snap-5279933414298446801-1-73aeaf0e-d9af-42cd-abd5-45e352d1b137.avro",
    "schema-id" : 0
  } ],
  "statistics" : [ ],
  "partition-statistics" : [ ],
  "snapshot-log" : [ {
    "timestamp-ms" : 1752391363612,
    "snapshot-id" : 5279933414298446801
  } ],
  "metadata-log" : [ {
    "timestamp-ms" : 1752390893889,
    "metadata-file" : "s3://iceberg-workshop-datalake-7arcfcyrvanr/public_customers/metadata/00000-a4fe4565-e128-4f1c-aea6-18471c4e8748.metadata.json"
  } ]
}

基本信息

  • 格式版本format-version: 2(使用的是 Iceberg v2 格式)
  • 表 UUID163526bc-3eef-4fb9-b92b-0ccb37a90117(表的唯一标识符)
  • 位置s3://iceberg-workshop-datalake-7arcfcyrvanr/public_customers(表数据存储的 S3 路径)
  • 最后序列号1(最后操作的序列号)
  • 最后更新时间1752391363612(毫秒时间戳,对应 2025 年 7 月 13 日)

表结构定义

  • 当前 Schema ID0
  • 最后列 ID5(表中定义的最大列 ID)
  • 表结构 :包含 5 个字段
    • customer_id(整数类型)
    • whisker_name(字符串类型)
    • email(字符串类型)
    • paw_phone(字符串类型)
    • membership_date(时间戳类型)
    • 所有字段都是可空的(required: false

分区和排序信息

  • 分区规范 :使用默认分区规范 ID 0,没有定义分区字段(fields: []
  • 排序规范 :使用默认排序规范 ID 0,没有定义排序字段(fields: []

表属性

  • 使用 zstd 压缩算法存储 Parquet 文件:"write.parquet.compression-codec" : "zstd"

快照信息

  • 当前快照 ID5279933414298446801
  • 分支引用main 分支指向当前快照
  • 快照详情
    • 序列号:1
    • 创建时间:1752391363612(2025 年 7 月 13 日)
    • 操作类型:append(数据追加操作)
    • 添加了 10 个数据文件,包含 10 条记录
    • 数据文件总大小:17225 字节
    • 使用的是 Spark 3.5.4 引擎
    • 清单列表文件:s3://iceberg-workshop-datalake-7arcfcyrvanr/public_customers/metadata/snap-5279933414298446801-1-73aeaf0e-d9af-42cd-abd5-45e352d1b137.avro 日志信息
  • 快照日志:记录了快照 ID 和创建时间
  • 元数据日志:记录了元数据文件的历史,包含一个条目指向初始元数据文件

Avro 数据文件

  • 73aeaf0e-d9af-42cd-abd5-45e352d1b137-m0.avro
  • snap-5279935414298446801-1-73aeaf0e-d9af-42cd-abd5-45e352d1b137.avro

这些是 Avro 格式的文件:

  • 带有 -m0.avro 后缀的通常是清单文件(manifest file),包含数据文件的列表和元数据
  • 带有 snap- 前缀的是快照相关的文件,记录表在特定时间点的状态
相关推荐
BYSJMG2 分钟前
计算机毕业设计选题推荐:基于Hadoop的城市交通数据可视化系统
大数据·vue.js·hadoop·分布式·后端·信息可视化·课程设计
BYSJMG11 分钟前
Python毕业设计选题推荐:基于大数据的美食数据分析与可视化系统实战
大数据·vue.js·后端·python·数据分析·课程设计·美食
阿珍爱上了阿强2.015 分钟前
Elasticsearch 实战:客户数据索引设计与精准筛选查询实践
大数据·elasticsearch·搜索引擎
ba_pi29 分钟前
每天写点什么2026-02-2(1.5)数字化转型和元宇宙
大数据·人工智能
小W与影刀RPA1 小时前
【影刀RPA】:智能过滤敏感词,高效输出表格
大数据·人工智能·python·低代码·自动化·rpa·影刀rpa
远方16091 小时前
112-Oracle database 26ai下载和安装环境准备
大数据·数据库·sql·oracle·database
2501_947908201 小时前
范建峰携手安盛投资 助力普惠金融惠及更多民生领域
大数据·人工智能·金融
YangYang9YangYan1 小时前
2026高职大数据专业数据分析学习必要性
大数据·学习·数据分析
nimadan122 小时前
**AI漫剧剧本写作工具2025推荐,三款适配不同创作场景的
大数据·人工智能·python
亿信华辰软件2 小时前
已经上了数据中台,还要做数据治理吗?
大数据·人工智能·数据治理