

# カタログレベルのテーブルオプティマイザー
<a name="catalog-level-optimizers"></a>

1 回限りのカタログ設定では、AWS Glue Data Catalog にあるすべての新規および更新された Apache Iceberg テーブルに対して、圧縮、スナップショット保持、孤立ファイル削除などの自動オプティマイザーを設定できます。カタログレベルのオプティマイザー設定を使用すると、カタログ内のすべてのテーブルに一貫したオプティマイザー設定を適用できるため、テーブルごとにオプティマイザーを個別に設定する必要がなくなります。

データレイクの管理者は、Lake Formation コンソールでデフォルトのカタログを選択し、`Table optimization` オプションを使用してオプティマイザーを有効にすることで、統計の生成を設定できます。Data Catalog で新しいテーブルを作成したり、既存のテーブルを更新したりすると、Data Catalog はテーブルの最適化を自動的に実行して運用上の負担を軽減します。

テーブルレベルで最適化を設定した場合、またはテーブルのテーブル最適化設定を以前に削除した場合、それらのテーブル固有の設定は、テーブル最適化のデフォルトのカタログ設定よりも優先されます。設定パラメータがテーブルレベルまたはカタログレベルで定義されていない場合、Iceberg テーブルプロパティ値が適用されます。この設定は、スナップショットの保持および孤立ファイルの削除オプティマイザーに適用されます。

カタログレベルのオプティマイザーを有効にするときは、次の点を考慮してください。
+ カタログの作成時に最適化設定を行い、その後 Update Catalog リクエストを通じて最適化を無効にすると、オペレーションはカタログ内のすべてのテーブルにカスケードします。
+ 特定のテーブルにオプティマイザーを既に設定している場合、カタログレベルで無効化オペレーションを行ってもこのテーブルには影響しません。
+ カタログレベルでオプティマイザーを無効にすると、既存のオプティマイザー設定を持つテーブルは特定の設定を維持し、カタログレベルの変更の影響を受けません。ただし、独自のオプティマイザー設定がないテーブルは、カタログレベルから無効状態を継承します。
+ スナップショット保持オプティマイザーと孤立ファイル削除オプティマイザーはスケジュールベースであるため、更新によりスケジュールの開始がランダムに遅延します。これにより、各オプティマイザーがわずかに異なる時間に開始され、負荷が分散されるため、サービス制限を超える可能性が低くなります。
+ 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>

 データカタログ内のすべての新しい Apache Iceberg テーブルの自動テーブル最適化を有効にできます。テーブルを作成すると、テーブル最適化の設定を手動で明示的に更新することもできます。

 データカタログの設定を更新してカタログレベルのテーブル最適化を有効にするには、使用する IAM ロールに、ルートカタログに対する `glue:UpdateCatalog` アクセス許可が必要になります。カタログのプロパティは、`GetCatalog` API を使用して確認できます。

 Lake Formation マネージドテーブルの場合、カタログ最適化設定中に選択した IAM ロールには、新しいテーブルまたは更新されたテーブルに対する Lake Formation `ALTER`、`DESCRIBE`、`INSERT`、および `DELETE` のアクセス許可が必要です。

## カタログレベルのオプティマイザーを有効にするには (コンソール)
<a name="enable-catalog-optimizers-console"></a>

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

1. ナビゲーションペインで、**[データカタログ]** を選択します。

1. **[カタログ]** タブを選択します。

1. アカウントレベルのカタログを選択します。

1. **[テーブルの最適化]** タブで、**[テーブルの最適化]**、**[編集]** を選択します。また、**[アクション]** で **[最適化を編集]** を選択することもできます。  
![\[このスクリーンショットは、カタログレベルで最適化を有効にする編集オプションを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/catalog-edit-optimizations.png)

1. **[テーブルの最適化]** ページで、次のオプションを設定します。  
![\[このスクリーンショットは、カタログレベルの最適化オプションを示しています。\]](http://docs.aws.amazon.com/ja_jp/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>

 カタログレベルのテーブル最適化が有効になっている場合、Apache Iceberg テーブルが、AWS マネジメントコンソール、SDK、AWS Glue クローラー のいずれかで `CreateTable` または `UpdateTable` API を介して作成または更新されるたびに、そのテーブルに対して同等のテーブルレベルの設定が作成されます。

 テーブルを作成または更新したら、テーブルの詳細を検証してテーブル最適化を確定できます。`Table optimization` では、`Configuration source` プロパティが `Catalog` に設定されているところを示しています。

![\[カタログレベルの最適化設定を持つ Apache Iceberg テーブルのイメージが適用されました。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/catalog-optimization-enabled.png)


# カタログレベルのテーブル最適化の無効化
<a name="disable-auto-table-optimizers"></a>

 AWS Lake Formation コンソールと `glue:UpdateCatalog` API を使用して、新しいテーブルのテーブル最適化を無効にすることができます。

**カタログレベルでテーブルの最適化を無効にするには**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

1. 左のナビゲーションペインで **[カタログ]** を選択します。

1. **[カタログの概要]** ページの **[テーブルの最適化]** で **[編集]** を選択します。

1. **[最適化の編集]**ページで、**[最適化オプション]** の選択を解除します。

1. **[保存]** を選択します。