remove_orphan_files
语法参数说明
remove_orphan_files可用于移除未在Iceberg表的任何元数据文件中引用的文件,这些文件可被视为 “孤立文件”。
| 参数名称 | 参数类型 | 参数说明 |
|---|---|---|
| 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 | 当位置前缀(方案/权限)不匹配时的行为,包括:
|
输出结果:
| 参数名称 | 参数类型 | 参数说明 |
|---|---|---|
| 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'));