

# 启用孤立文件删除功能
<a name="enable-orphan-file-deletion"></a>

 您可以在 Data Catalog 中使用 AWS Glue 控制台、AWS CLI 或 AWS API 为 Apache Iceberg 表启用孤立文件删除功能。对于新表，您可以在创建表时选择 Apache Iceberg 表格式并启用孤立文件删除优化器。新表会默认禁用快照保留功能。

------
#### [ Console ]

**启用孤立文件删除功能**

1.  打开 AWS Glue 控制台（[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)），然后以数据湖管理员、表创建者或已被授予表的 `glue:UpdateTable` 和 `lakeformation:GetDataAccess` 权限的用户身份登录。

1. 在导航窗格的**数据目录**下，请选择**表**。

1. 在**表**页面上，选择要启用孤立文件删除功能的 Iceberg 表。

   选择该页面下半部分的**表优化**选项卡，然后选择**启用**，并从**操作**中选择**孤立文件删除**。

   您还可以从该页面右上角的**操作**菜单中，选择**优化**下的**启用**。

1. 在**启用优化**页面的**优化选项**下，选择**孤立文件删除**。

1. 如果您选择使用**默认设置**，则所有孤立文件将在 3 天后删除。如果要将孤立文件保留特定的天数，请选择**自定义设置**。

1. 然后选择具有删除孤立文件所需权限的 IAM 角色。

1. 如果您有安全策略配置，其中 Iceberg 表优化器需要从特定的虚拟私有云（VPC）访问 Amazon S3 存储桶，则请创建 AWS Glue 网络连接或使用现有网络连接。

   如果您尚未设置 AWS Glue VPC 连接，则请使用 AWS Glue 控制台或 AWS CLI/SDK 按照[为连接器创建连接](https://docs.aws.amazon.com/glue/latest/dg/creating-connections.html)部分中的步骤创建一个新连接。

1. 如果您选择**自定义设置**，请在**孤立文件删除配置**下，输入文件删除之前要保留的天数。您也可以指定两次连续优化器运行的时间间隔。默认值为 24 小时。

1. 选择**启用优化**。

------
#### [ AWS CLI ]

 要在 AWS Glue 中为 Iceberg 表启用孤立文件删除功能，需要创建一个 `orphan_file_deletion` 类型的表优化器并将 `enabled` 字段设置为 true。要使用 AWS CLI 为 Iceberg 表创建孤立文件删除优化器，可以使用以下命令：

```
aws glue create-table-optimizer \
 --catalog-id {{123456789012}} \
 --database-name {{iceberg_db}} \
 --table-name {{iceberg_table}} \
 --table-optimizer-configuration '{"roleArn":"arn:aws:iam::{{123456789012}}:role/{{optimizer_role}}","enabled":true, "vpcConfiguration":{
"glueConnectionName":{{"glue_connection_name"}}}, "orphanFileDeletionConfiguration":{"icebergConfiguration":{"orphanFileRetentionPeriodInDays":{{3}}, "location":'{{S3 location}}'}}}'\
 --type orphan_file_deletion
```

 此命令将为指定的 Iceberg 表创建孤立文件删除优化器。关键参数如下：
+ roleArn – 具有访问 S3 存储桶和 Glue 资源所需权限的 IAM 角色的 ARN。
+ enabled – 设置为 true 将会启用优化器
+ orphanFileRetentionPeriodInDays – 孤立文件删除之前要保留的天数（至少 1 天）。
+ type – 设置为 orphan\_file\_deletion 将会创建孤立文件删除优化器。

 该表优化器创建后，将会定期运行孤立文件删除（如果保持启用状态，则会每天删除一次）。您可以使用 `list-table-optimizer-runs` API 来检查运行情况。孤立文件删除作业会识别并删除表的 Iceberg 元数据中未跟踪的文件。

------
#### [ API ]

调用 [CreateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-CreateTableOptimizer) 操作可创建特定表的孤立文件删除优化器。

------