更新时间:2026-06-11 GMT+08:00
分享

expire_snapshots

基本语法

在Iceberg中,每次写入、更新、删除、upsert、压缩操作都会生成新快照,同时保留旧数据和元数据,以支持快照隔离和时间旅行功能。expire_snapshots可用于移除不再需要的旧快照及其文件,更多元数据管理操作请参见Metadata management

expire_snapshots会移除旧快照以及这些旧快照唯一需要的数据文件,意味着该操作绝不会移除仍被非过期快照所需要的文件。例如:

移除特定日期和时间之前的快照,但保留最后100个快照:
CALL prod.system.expire_snapshots('db.sample', TIMESTAMP '2021-06-30 00:00:00.000', 100);

相关参数介绍请参见表1

表1 expire_snapshots参数介绍

参数

类型

说明

table

string

需要更新的表名,必须设置。

older_than

timestamp

此时间戳之前的快照将被移除,默认值为5天前。

retain_last

int

保留的祖先快照数量,默认值为1,与“older_than”设置的时间戳无关。

max_concurrent_deletes

int

用于删除文件操作的线程池大小,默认情况下,不使用线程池。

stream_results

boolean

当设置该参数为“true”时,删除文件将通过RDD分区发送到Spark驱动程序(默认情况下,所有文件都将发送到Spark驱动程序)。

建议将该参数设置为“true”,以防止Spark驱动程序因文件过大而发生内存溢出。

snapshot_ids

array of long

要过期的快照ID数组。

如果不设置older_thanretain_last,将使用表的过期属性,仍被分支或标签引用的快照不会被移除。默认情况下,分支和标签永不过期,但可通过表属性history.expire.max-ref-age-ms更改其保留策略,且主分支永不过期。

输出结果介绍请参见表2

表2 expire_snapshots操作输出结果

参数

类型

说明

deleted_data_files_count

long

此操作删除的数据文件数量。

deleted_position_delete_files_count

long

此操作删除的位置删除文件数量。

deleted_equality_delete_files_count

long

此操作删除的等值删除文件数量。

deleted_manifest_files_count

long

此操作删除的清单文件数量。

deleted_manifest_lists_count

long

此操作删除的清单列表文件数量。

相关文档