通过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 格式) - 表 UUID :
163526bc-3eef-4fb9-b92b-0ccb37a90117
(表的唯一标识符) - 位置 :
s3://iceberg-workshop-datalake-7arcfcyrvanr/public_customers
(表数据存储的 S3 路径) - 最后序列号 :
1
(最后操作的序列号) - 最后更新时间 :
1752391363612
(毫秒时间戳,对应 2025 年 7 月 13 日)
表结构定义
- 当前 Schema ID :
0
- 最后列 ID :
5
(表中定义的最大列 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"
快照信息
- 当前快照 ID :
5279933414298446801
- 分支引用 :
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-
前缀的是快照相关的文件,记录表在特定时间点的状态