更新时间:2025-12-10 GMT+08:00
分享

ICEBERG表服务函数

iceberg_expire_snapshots

描述:Iceberg每个commit都会生成一个新快照,同时保留旧数据和元数据,以便进行快照隔离和time travel。expire snapshots可以用来清理不再需要的旧快照以及仅被不需要快照包含的数据文件,以提高查询、成本效率。

注意事项

  • 要明确旧快照的清理、保留策略。执行旧快照清理后,被删除的旧快照数据将无法再通过常规查询访问,如果有正在运行的查询依赖于即将过期的快照数据,可能会导致查询失败或结果不准确。
  • 执行expire snapshots,retain_last、older_than、snapshot_ids可能会出现条件互相冲突的场景,iceberg不是严格按照传入条件处理的,会尽可能多地保留snapshots。

语法

1
2
iceberg_expire_snapshots('schema.table','older_than')
iceberg_expire_snapshots('schema.table','older_than', retain_last, 'snapshot_ids')

入参说明

名称

类型

默认值

是否必填

说明

table

string

要操作的表

older_than

timestamp

5天前

超过该时限的快照将被删除

注意:需要输入确定具体时区,避免误解。可以在输入时指定,或者通过set timezone=xxx指定。

retain_last

int

1

保留多少个snapshots。

snapshot_ids

string

以分号(;)分隔, 可以传入多个snapshot_id。

返回值

名称

说明

deleted_data_files_count

被删除的数据文件数量。

deleted_position_delete_files_count

被删除的position delete文件数量。

deleted_equality_delete_files_count

被删除的equality delete文件数量。

deleted_manifest_files_count

被删除的清单文件数量。

deleted_manifest_lists_count

被删除的快照文件数量。

deleted_statistics_files_count

被删除的统计文件数量。

iceberg_rewrite_manifests

描述:Iceberg表跟踪每个数据文件,数据文件越多,存储在快照文件中的元数据就越多,rewrite manifests可以重写表的清单,优化扫描规划。

注意事项:该操作会生成新的清单文件,可能影响正在进行的查询和写入操作,导致元数据冲突,应避免与其他操作并发执行。

语法

1
iceberg_rewrite_manifests('schema.table')

入参说明

名称

类型

默认值

是否必填

说明

table

string

要操作的表。

返回值

名称

说明

rewritten_manifests_count

被重写的清单文件数量。

added_manifests_count

新增的清单文件数量。

iceberg_remove_orphanfiles

描述:对于未被任何Iceberg元数据文件引用的文件,我们称之为孤立文件,这类文件可能由失败的事务、并发操作未能成功提交、旧快照清理失败、元数据清理失败等原因造成,通常可以删除。

注意事项:确保无并发写操作,删除过程中,如果有运行中的写入任务,可能会误删正在生成的文件(未提交的临时文件)。

语法

1
2
iceberg_remove_orphanfiles('schema.table')
iceberg_remove_orphanfiles('schema.table', 'older_than', 'location')

入参说明

名称

类型

默认值

是否必填

说明

table

string

要操作的表

older_than

timestamp

三天前

早于older_than的孤立文件将被删除。

location

string

表根目录

location下的孤立文件将被删除。

返回值

名称

说明

orphan_file_location

被认定为孤立文件的文件路径。

iceberg_add_files

描述:将目标文件夹下的所有文件添加到iceberg表中。

该语法会递归扫描目标文件夹下的所有文件,并添加到iceberg表中。

所有文件必须满足:

  • 必须为parquet文件格式。
  • parquet文件中的列名、列类型、列个数(包括分区列)必须与目标表一致。
  • 单个parquet文件中的所有数据必须隶属于同一个分区。

语法

1
iceberg_add_files(table,foldername,iscopy)

入参说明

  • table:regclass类型,表名。
  • foldername:text类型,文件夹路径列表,支持多个路径,以逗号分隔。
  • iscopy:bool类型,是否拷贝。

返回值:bool,是否执行成功。

iceberg_show_snapshots

描述:查询指定ICEBERG表的快照信息。

语法

1
iceberg_show_snapshots(table)

入参说明:table:regclass类型,表名。

返回值:

  • sequence_number:int64类型,快照序号。
  • snapshot_id:int64类型,快照ID。
  • create_time:timestamptz类型,快照创建时间。
  • parent_id:int64类型,快照的父亲节点,如果为0,表示无父亲节点。
  • operation:text类型,本次快照的操作类型。
  • manifestlist:text类型,快照对应的manifest list路径。
  • summary:text类型,快照统计信息。

相关文档