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

remove_orphan_files

语法参数说明

remove_orphan_files可用于移除未在Iceberg表的任何元数据文件中引用的文件,这些文件可被视为 “孤立文件”。

表1 remove_orphan_files参数介绍

参数名称

参数类型

参数说明

table

string

必须参数,表示要清理的表名。

older_than

timestamp

表示移除在此时间戳之前创建的孤立文件,默认值为3天前。

location

string

表示要查找文件的目录,默认为表的存储位置。

dry_run

boolean

配置为“true”时,不实际删除文件,默认值为“false”。

max_concurrent_deletes

int

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

file_list_view

string

用于查找文件的数据集(跳过目录列表)。

equal_schemes

map

被视为相等的文件系统方案映射,键是用逗号分隔的方案列表,值是一个方案,默认值为“map ('s3a,s3n','s3')”。

equal_authorities

map

被视为相等的文件系统权限映射,键是用逗号分隔的权限列表,值是一个权限。

prefix_mismatch_mode

string

当位置前缀(方案/权限)不匹配时的行为,包括:

  • ERROR:抛出异常(默认值)。
  • IGNORE:不执行任何操作。
  • DELETE:删除文件。

输出结果:

表2 输出结果参数介绍

参数名称

参数类型

参数说明

orphan_file_location

String

此命令确定为孤立文件的每个文件的路径。

示例

  • 对表执行remove_orphan_files命令的试运行,列出所有候选删除文件但不实际删除:
    CALL prod.system.remove_orphan_files(table => 'db.sample', dry_run => true);
  • 移除表db.sample的“tablelocation/data”文件夹中所有不被该表识别的文件:
    CALL prod.system.remove_orphan_files(table => 'db.sample', location => 'tablelocation/data');
  • 当文件除位置前缀(方案/权限)外与元数据文件中的引用匹配时,默认会抛出错误。通过将“prefix_mismatch_mode”设置为“IGNORE”,可忽略该错误并跳过文件:
    CALL prod.system.remove_orphan_files(table => 'db.sample', prefix_mismatch_mode => 'IGNORE');
  • 通过将“prefix_mismatch_mode”设置为“DELETE”,仍可删除该文件:
    CALL prod.system.remove_orphan_files(table => 'db.sample', prefix_mismatch_mode => 'DELETE');

    也可通过将不匹配的前缀视为相等来删除文件:

    CALL prod.system.remove_orphan_files(table => 'db.sample', equal_schemes => map('file', 'file1'));
    CALL prod.system.remove_orphan_files(table => 'db.sample', equal_authorities => map('ns1', 'ns2'));

相关文档