

# 目录级表优化器
<a name="catalog-level-optimizers"></a>

使用一次性目录配置，可以为 AWS Glue Data Catalog 中所有新增和更新后的 Apache Iceberg 表设置自动优化器，例如压缩、快照保留和孤立文件删除等优化器。使用目录级优化器配置，可以在目录的所有表中应用一致的优化器设置，无需为每个表单独配置优化器。

数据湖管理员可以在 Lake Formation 控制台中选择默认目录，并使用 `Table optimization` 选项启用优化器，从而配置表优化器。在 Data Catalog 中创建新表或更新现有表时，Data Catalog 会自动运行表优化来减轻运维负担。

如果已在表级别配置优化，或曾删除某表的优化设置，这些表级特定设置将优先于表优化的默认目录设置。若未在表或目录级别定义配置参数，则将应用 Iceberg 表属性值。该设置适用于快照保留和孤立文件删除优化器。

启用目录级优化器时，需注意以下事项：
+ 在创建目录时配置优化设置，随后通过“更新目录”请求禁用优化时，该操作将级联到目录中的所有表。
+ 若已为某表配置优化器，则目录级别的禁用操作不会影响该表。
+ 在目录级别禁用优化器后，具有现有优化器配置的表将保持其特定设置，并且不受目录级更改的影响。不过，没有专属优化器配置的表会继承目录级别的禁用状态。
+ 由于快照保留和孤立文件删除优化器支持基于调度的运行模式，配置更新将为其调度起始时间引入随机延迟。这使得每个优化器的启动时间各有不同，从而分散系统负载并降低超出服务限制的可能性。
+ 启用 AWS Glue Data Catalog 加密后，表不会自动沿用目录级别的优化器设置。如果您的目录启用了元数据加密，则必须为每个表单独配置表优化器。要沿用目录级优化器，必须在目录上禁用元数据加密。

**Topics**
+ [启用目录级自动表优化](enable-auto-table-optimizers.md)
+ [查看目录级优化](view-catalog-optimizations.md)
+ [禁用目录级表优化](disable-auto-table-optimizers.md)

# 启用目录级自动表优化
<a name="enable-auto-table-optimizers"></a>

 您可以为 Data Catalog 中的所有 Apache Iceberg 新表启用自动表优化。创建表后，还可以手动显式更新表优化设置。

 要更新 Data Catalog 设置以启用目录级表优化，使用的 IAM 角色必须对根目录具有 `glue:UpdateCatalog` 权限。您可以使用 `GetCatalog` API 来验证目录属性。

 对于 Lake Formation 托管式表，在目录优化配置期间选择的 IAM 角色需要任何新表或更新后的表的 Lake Formation `ALTER`、`DESCRIBE`、`INSERT` 以及 `DELETE` 权限。

## 启用目录级优化器（控制台）
<a name="enable-catalog-optimizers-console"></a>

1. 通过 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) 打开 Lake Formation 控制台。

1. 在导航窗格中，选择 **Data Catalog**。

1. 选择**目录**选项卡。

1. 选择账户级别目录。

1. 在**表优化**选项卡下选择**表优化**、**编辑**。也可在**操作**中选择**编辑优化**。  
![\[屏幕截图，其中显示了在目录级别启用优化的编辑选项。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/catalog-edit-optimizations.png)

1. 在**表优化**页面上配置以下选项：  
![\[屏幕截图，其中显示了目录级别的优化选项。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/catalog-optimization-options.png)

   1. 配置**压缩**设置：
      + 启用/禁用压缩功能。
      + 选择具有运行优化器所需权限的 IAM 角色。

        有关 IAM 角色权限要求的更多信息，请参阅[表优化的先决条件](optimization-prerequisites.md)。

   1. 配置**快照保留**设置：
      + 启用/禁用保留功能。
      + 设置以天为单位的快照保留期：默认值为 5 天。
      + 设置要保留的快照数量：默认值为 1 个快照。
      + 启用/禁用过期文件清理功能。

   1. 配置**孤立文件删除**设置：
      + 启用/禁用孤立文件删除功能。
      + 设置以天为单位的孤立文件保留期：默认值为 3 天。

1. 选择**保存**。

## 通过 AWS CLI 启用目录级优化器
<a name="catalog-auto-optimizers-cli"></a>

使用以下 CLI 命令更新现有目录的优化器设置：

**Example 更新目录的优化器设置**  

```
aws glue update-catalog \
   --name catalog-id \
  --catalog-input \
  '{
    "CatalogId": "111122223333",
    "CatalogInput": {
        "CatalogProperties": {
            "CustomProperties": {
                "ColumnStatistics.Enabled": "false",
                "ColumnStatistics.RoleArn": "arn:aws:iam::111122223333:role/service-role/stats-role-name"
            },
            "IcebergOptimizationProperties": {
                "RoleArn": "arn:aws:iam::111122223333:role/optimizer-role-name",
                "Compaction": {
                    "enabled": "true"
                },
                "Retention": {
                    "enabled": "true",
                    "snapshotRetentionPeriodInDays": "10",
                    "numberOfSnapshotsToRetain": "5",
                    "cleanExpiredFiles": "true"
                },
                "OrphanFileDeletion": {
                    "enabled": "true",
                    "orphanFileRetentionPeriodInDays": "3"
                }
            }
        }
    }
}'
```

如果在使用目录级优化器时遇到问题，请检查以下内容：
+ 确保 IAM 角色具有“先决条件”部分所述的正确权限。
+ 查看 CloudWatch 日志，了解与优化器操作相关的任何错误信息。

   有关更多信息，请参阅《Amazon CloudWatch 用户指南》中的[查看可用的指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html)**。
+ 检查目录配置，确认目录设置是否已成功应用。
+ 对于表访问失败，请查看 CloudWatch 日志和 EventBridge 通知，了解详细的错误信息。

# 查看目录级优化
<a name="view-catalog-optimizations"></a>

 启用目录级表优化后，每当在 AWS 管理控制台、SDK 或 AWS Glue 爬网程序 中通过 `CreateTable` 或 `UpdateTable` API 创建或更新 Apache Iceberg 表时，都会为该表创建等效的表级设置。

 创建或更新表后，您可以查验表详细信息来确认表优化。`Table optimization` 显示设置为 `Catalog` 的 `Configuration source` 属性。

![\[已应用具有目录级优化配置的 Apache Iceberg 表的图像。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/catalog-optimization-enabled.png)


# 禁用目录级表优化
<a name="disable-auto-table-optimizers"></a>

 使用 AWS Lake Formation 控制台或 `glue:UpdateCatalog` API 可以禁用新表的表优化。

**在目录级别禁用表优化**

1. 通过 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) 打开 Lake Formation 控制台。

1. 在左侧导航栏上，选择**目录**。

1. 在**目录摘要**页面上，选择**表优化**下的**编辑**。

1. 在**编辑优化**页面上，取消选择**优化选项**。

1. 选择**保存**。