

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 填入並管理交易資料表
<a name="populate-otf"></a>

[Apache Iceberg](https://iceberg.apache.org/)、[Apache Hudi](https://hudi.incubator.apache.org/) 和 Linux Foundation [Delta Lake](https://delta.io/) 是開放原始碼資料表格式，旨在處理 Apache Spark 中的大規模資料分析和資料湖工作負載。

您可以使用 AWS Glue Data Catalog 下列方法在 中填入 Iceberg、Hudi 和 Delta Lake 資料表：
+ AWS Glue 編目程式； – AWS Glue 編目程式可以自動探索和填入資料目錄中的 Iceberg、Hudi 和 Delta Lake 資料表中繼資料。如需詳細資訊，請參閱[使用編目程式填入 Data Catalog](add-crawler.md)。
+ AWS Glue ETL 任務 – 您可以建立 ETL 任務，將資料寫入 Iceberg、Hudi 和 Delta Lake 資料表，並在 Data Catalog 中填入其中繼資料。如需詳細資訊，請參閱[搭配 AWS Glue ETL 任務使用資料湖架構](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-datalake-native-frameworks.html)。
+ AWS Glue 主控台、 AWS Lake Formation 主控台 AWS CLI 或 API – 您可以使用 AWS Glue 主控台、Lake Formation 主控台或 API，在 Data Catalog 中建立和管理 Iceberg 資料表定義。

**Topics**
+ [建立 Apache Iceberg 資料表](#creating-iceberg-tables)
+ [最佳化處理 Iceberg 資料表](table-optimizers.md)
+ [最佳化 Iceberg 資料表的查詢效能](iceberg-column-statistics.md)

## 建立 Apache Iceberg 資料表
<a name="creating-iceberg-tables"></a>

可以建立 Apache Iceberg 資料表，在 AWS Glue Data Catalog 中使用 Apache Parquet 資料格式，並將資料存放在 Amazon S3 中。Data Catalog 中的資料表是中繼資料定義，表示資料存放區中的資料。根據預設， AWS Glue 會建立 Iceberg v2 資料表。有關 v1 和 v2 資料表之間的區別，請參閱 Apache Iceberg 文件中的[格式版本變更](https://iceberg.apache.org/spec/#appendix-e-format-version-changes)。

 [Apache Iceberg](https://iceberg.apache.org/) 是開放式的資料表格式，專用於非常大型的分析資料集。Iceberg 可讓您輕鬆地變更結構描述，也稱為結構描述演變，這表示使用者可以從資料表中新增、重新命名或移除資料欄，而不會中斷基礎資料。Iceberg 也支援資料版本控制，可讓使用者追蹤資料隨時間的變化。這可啟用時間歷程功能，允許使用者存取和查詢資料的歷史版本，並分析更新和刪除之間的資料變更。

您可以使用 AWS Glue 或 Lake Formation 主控台或 AWS Glue API 中的 `CreateTable`操作，在 Data Catalog 中建立 Iceberg 資料表。如需詳細資訊，請參閱 [CreateTable 動作 (Python: create\$1table)](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-CreateTable)。

當您在 Data Catalog 中建立 Iceberg 資料表時，必須在 Amazon S3 中指定資料表格式和中繼資料檔案路徑，才能執行讀取和寫入。

 當您向 Amazon S3 資料位置註冊時，您可以使用 Lake Formation 使用精細存取控制許可來保護 Iceberg 資料表 AWS Lake Formation。對於 Amazon S3 中的來源資料和未向 Lake Formation 註冊的中繼資料，存取權取決於 Amazon S3 和 AWS Glue 動作的 IAM 許可政策。如需詳細資訊，請參閱[管理許可](https://docs.aws.amazon.com/lake-formation/latest/dg/managing-permissions.html)。

**注意**  
Data Catalog 不支援建立分區和新增 Iceberg 資料表屬性。

### 先決條件
<a name="iceberg-prerequisites"></a>

 若要在 Data Catalog 中建立 Iceberg 資料表，並設定 Lake Formation 資料存取許可，需要滿足下列要求：

1. 

**在沒有向 Lake Formation 註冊資料的情況下建立 Iceberg 資料表所需的許可。**

   除了在 Data Catalog 中建立資料表所需的許可之外，資料表建立者還需要下列許可：
   + `s3:PutObject` on resource arn:aws:s3:::\$1bucketName\$1
   + `s3:GetObject` on resource arn:aws:s3:::\$1bucketName\$1
   + `s3:DeleteObject`on resource arn:aws:s3:::\$1bucketName\$1

1. 

**在向 Lake Formation 註冊資料的情況下建立 Iceberg 資料表所需的許可：**

   若要使用 Lake Formation 來管理和保護資料湖中的資料，請使用 Lake Formation 註冊具有資料表資料的 Amazon S3 位置。這可讓 Lake Formation 將登入資料提供給 AWS 分析服務，例如 Athena、Redshift Spectrum 和 Amazon EMR 來存取資料。如需有關註冊 Amazon S3 位置的詳細資訊，請參閱[將 Amazon S3 位置新增至您的資料湖](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html)。

   讀取和寫入向 Lake Formation 註冊的基礎資料的主體需要下列許可：
   + `lakeformation:GetDataAccess`
   + `DATA_LOCATION_ACCESS`

     在某個位置擁有資料位置許可的主體在所有子位置也擁有位置許可。

     如需資料位置許可的詳細資訊，請參閱[基礎資料存取控制](https://docs.aws.amazon.com/lake-formation/latest/dg/access-control-underlying-data.html#data-location-permissions)。

 若要啟用壓縮，服務需要擔任有權在 Data Catalog 中更新資料表的 IAM 角色。如需詳細資訊，請參閱[資料表最佳化先決條件](optimization-prerequisites.md) 

### 建立 Iceberg 資料表
<a name="create-iceberg-table"></a>

您可以使用 AWS Glue 或 Lake Formation 主控台或本頁所記載 AWS Command Line Interface 的方式建立 Iceberg v1 和 v2 資料表。也可以使用 AWS Glue 編目程式來建立 Iceberg 資料表。如需詳細資訊，請參閱《 AWS Glue 開發人員指南》中的 [Data Catalog 和編目程式](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html)。

**若要建立 Iceberg 資料表**

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

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 開啟 AWS Glue 主控台。

1. 在 Data Catalog 下，選擇**資料表**，然後使用**建立資料表**按鈕來指定下列屬性：
   + **資料表名稱** – 輸入資料表名稱。如果使用 Athena 來存取資料表，請使用《Amazon Athena 使用者指南》中的這些[命名秘訣](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html)。
   + **資料庫** – 選擇現有資料庫或建立新資料庫。
   + **說明** – 資料表的說明。您可以撰寫說明，來協助您了解資料表的內容。
   + **資料表格式** – 對於**資料表格式**，選擇 Apache Iceberg。
   + **啟用壓縮** – 選擇**啟用壓縮**，將資料表中的小型 Amazon S3 物件壓縮為較大的物件。
   + **IAM 角色** – 為了執行壓縮，服務會代表您擔任 IAM 角色。您可以使用下拉式選單選擇 IAM 角色。請確認角色具有啟用壓縮的必要權限。

     若要進一步了解必要的許可，請參閱 [資料表最佳化先決條件](optimization-prerequisites.md)。
   + **位置** – 指定在 Amazon S3 中存放中繼資料表之資料夾的路徑。Iceberg 需要 Data Catalog 中的中繼資料檔案和位置，才能執行讀取和寫入。
   + **結構描述** – 選擇**新增資料欄**以新增資料欄以及資料欄和資料類型。可以選擇建立空白資料表，稍後再更新結構描述。Data Catalog 支援 Hive 資料類型。如需詳細資訊，請參閱 [Hive 資料類型](https://cwiki.apache.org/confluence/plugins/servlet/mobile?contentId=27838462#content/view/27838462)。

      Iceberg 可讓您在建立資料表之後改進結構描述和分區。可以使用 [Athena 查詢](https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg-evolving-table-schema.html)來更新資料表結構描述，使用 [Spark 查詢](https://iceberg.apache.org/docs/latest/spark-ddl/#alter-table-sql-extensions)來更新分區。

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

```
aws glue create-table \
    --database-name iceberg-db \
    --region us-west-2 \
    --open-table-format-input '{
      "IcebergInput": { 
           "MetadataOperation": "CREATE",
           "Version": "2"
         }
      }' \
    --table-input '{"Name":"test-iceberg-input-demo",
            "TableType": "EXTERNAL_TABLE",
            "StorageDescriptor":{ 
               "Columns":[ 
                   {"Name":"col1", "Type":"int"}, 
                   {"Name":"col2", "Type":"int"}, 
                   {"Name":"col3", "Type":"string"}
                ], 
               "Location":"s3://DOC_EXAMPLE_BUCKET_ICEBERG/"
            }
        }'
```

------

**Topics**
+ [先決條件](#iceberg-prerequisites)
+ [建立 Iceberg 資料表](#create-iceberg-table)

# 最佳化處理 Iceberg 資料表
<a name="table-optimizers"></a>

AWS Glue 支援多個資料表最佳化選項，以增強 AWS 分析引擎和 ETL 任務所使用的 Apache Iceberg 資料表管理和效能。這些最佳化工具可提供高效儲存使用率、改善的查詢效能以及有效的資料管理。有三種類型的資料表最佳化工具可用於 AWS Glue：
+ **壓縮** – 資料壓縮會壓縮小型資料檔案，以減少儲存用量並提高讀取效能。合併和重寫資料檔案，以移除過時的資料，並將分段資料合併為更大、更有效的檔案。可以設定壓縮以自動執行。

  Binpack 是 Apache Iceberg 中的預設壓縮策略。其會將較小的資料檔案合併為較大的檔案，以獲得最佳效能。壓縮也支援將類似資料叢集在一起的 sort 和 Z order 策略。sort 會根據指定的資料欄整理資料，從而提高篩選操作的查詢效能。Z-order 會建立已排序的資料集，在同時查詢多個資料欄時可提高查詢效能。所有三種壓縮策略 - bincpak, sort, and Z-order - 可減少查詢引擎掃描的資料量，進而降低查詢處理成本。
+ **快照保留 **– 快照是 Iceberg 資料表的時間戳記版本。快照保留組態可讓客戶強制執行保留快照的時間長度，以及要保留的快照數量。設定快照保留最佳化工具可透過移除較舊、不必要的快照及其相關聯的基礎檔案，協助管理儲存體負荷。
+ **孤立檔案刪除** – 孤立檔案是 Iceberg 資料表中繼資料不再參考的檔案。這些檔案可能會隨著時間累積，特別是在資料表刪除或 ETL 任務失敗等操作之後。啟用孤立檔案刪除 AWS Glue 可讓 定期識別和移除這些不必要的檔案，釋放儲存空間。

目錄層級最佳化組態可透過 Lake Formation 主控台使用 API AWS Glue `UpdateCatalog`操作。您可以使用 AWS Glue 主控台或 AWS Glue API 操作，啟用或停用 Data Catalog 中個別 Iceberg 資料表的壓縮 AWS CLI、快照保留和孤立檔案刪除最佳化工具。

 下列影片示範如何在 Data Catalog 中設定 Iceberg 資料表的最佳化工具。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/xOXE7AS-pNA?si=lKvt_TSlPkoc6OXn/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/xOXE7AS-pNA?si=lKvt_TSlPkoc6OXn)


**Topics**
+ [資料表最佳化先決條件](optimization-prerequisites.md)
+ [目錄層級資料表最佳化工具](catalog-level-optimizers.md)
+ [壓縮最佳化](compaction-management.md)
+ [快照保留最佳化](snapshot-retention-management.md)
+ [刪除孤立檔案](orphan-file-deletion.md)
+ [檢視最佳化詳細資訊](view-optimization-status.md)
+ [檢視 Amazon CloudWatch 指標](view-optimization-metrics.md)
+ [刪除最佳化工具](delete-optimizer.md)
+ [考量和限制](optimizer-notes.md)
+ [資料表最佳化工具的支援區域](regions-optimizers.md)

# 資料表最佳化先決條件
<a name="optimization-prerequisites"></a>

資料表最佳化工具會假設您在為資料表啟用最佳化選項 （壓縮、快照保留和孤立檔案刪除） 時所指定的 AWS Identity and Access Management (IAM) 角色許可。可以為所有最佳化工具建立一個角色，或為每個最佳化工具建立單獨角色。

**注意**  
孤立檔案刪除最佳化工具不需要 `glue:updateTable` 或 `s3:putObject` 許可。快照過期和壓縮最佳化工具需要相同的許可集。

IAM 角色必須具有讀取資料和更新 Data Catalog 中繼資料的權限。您可以建立 IAM 角色，並連接下列內嵌政策：
+ 新增下列內嵌政策，為未註冊資料的位置授予 Amazon S3 讀取/寫入許可 AWS Lake Formation。此政策也包含更新 Data Catalog 中資料表的許可，以及允許 AWS Glue 在日誌中新增 Amazon CloudWatch 日誌和發佈指標的許可。針對 Amazon S3 中未向 Lake Formation 註冊的來源資料，存取權將由 Amazon S3 和 AWS Glue 動作的 IAM 權限政策決定。

  在下列內嵌政策中，請將 `bucket-name` 取代為 Amazon S3 儲存貯體名稱，將 `aws-account-id` 和 `region` 取代為有效的 AWS 帳號和 Data Catalog 的區域，將 `database_name` 取代為資料庫的名稱，以及將 `table_name` 取代為資料表的名稱。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3:PutObject",
                  "s3:GetObject",
                  "s3:DeleteObject"
              ],
              "Resource": [
                  "arn:aws:s3:::amzn-s3-demo-bucket/*"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "s3:ListBucket"
              ],
              "Resource": [
                  "arn:aws:s3:::amzn-s3-demo-bucket"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "glue:UpdateTable",
                  "glue:GetTable"
              ],
              "Resource": [
                  "arn:aws:glue:us-east-1:111122223333:table/<database-name>/<table-name>",
                  "arn:aws:glue:us-east-1:111122223333:database/<database-name>",
                  "arn:aws:glue:us-east-1:111122223333:catalog"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "logs:CreateLogGroup",
                  "logs:CreateLogStream",
                  "logs:PutLogEvents"
              ],
              "Resource": [
                  "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-compaction/logs:*",
                  "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-retention/logs:*",
                  "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-orphan-file-deletion/logs:*"
              ]
          }
      ]
  }
  ```

------
+ 使用下列政策針對向 Lake Formation 註冊的資料啟用壓縮功能。

  如果最佳化角色沒有在資料表上授權的 `IAM_ALLOWED_PRINCIPALS` 群組許可，則該角色需要資料表的 Lake Formation `ALTER`、`DESCRIBE`、`INSERT` 和 `DELETE` 許可。

  如需有關向 Lake Formation 註冊 Amazon S3 儲存貯體的詳細資訊，請參閱[將 Amazon S3 位置新增至您的資料湖](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html)。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lakeformation:GetDataAccess"
        ],
        "Resource": "*"
      },
      {
        "Effect": "Allow",
        "Action": [
          "glue:UpdateTable",
          "glue:GetTable"
        ],
        "Resource": [
          "arn:aws:glue:us-east-1:111122223333:table/databaseName/tableName",
          "arn:aws:glue:us-east-1:111122223333:database/databaseName",
          "arn:aws:glue:us-east-1:111122223333:catalog"
        ]
      },
      {
        "Effect": "Allow",
        "Action": [
          "logs:CreateLogGroup",
          "logs:CreateLogStream",
          "logs:PutLogEvents"
        ],
        "Resource": [
          "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-compaction/logs:*",
          "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-retention/logs:*",
          "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-orphan-file-deletion/logs:*"
        ]
      }
    ]
  }
  ```

------
+ (選用) 若要使用[伺服器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)進行加密之 Amazon S3 儲存貯體中的資料來最佳化 Iceberg 資料表，則壓縮角色需要解密 Amazon S3 物件的權限，並產生新的資料金鑰以將物件寫入加密的儲存貯體。將下列政策新增至所需的 AWS KMS 金鑰。我們僅支援儲存貯體層級加密。

  ```
  {
      "Effect": "Allow",
      "Principal": {
          "AWS": "arn:aws:iam::<aws-account-id>:role/<optimizer-role-name>"
      },
      "Action": [
          "kms:Decrypt",
          "kms:GenerateDataKey"
      ],
      "Resource": "*"
  }
  ```
+  (選用) 針對向 Lake Formation 註冊的資料位置，用於註冊該位置的角色需要解密 Amazon S3 物件並產生新的資料金鑰以將物件寫入加密儲存貯體的權限。如需詳細資訊，請參閱[註冊加密的 Amazon S3 位置](https://docs.aws.amazon.com/lake-formation/latest/dg/register-encrypted.html)。
+ （選用） 如果 AWS KMS 金鑰存放在不同的 AWS 帳戶中，您需要包含壓縮角色的下列許可。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "kms:Decrypt",
          "kms:GenerateDataKey"
        ],
        "Resource": [
          "arn:aws:kms:us-east-1:111122223333:key/key-id"
        ]
      }
    ]
  }
  ```

------
+  您用來執行壓縮程序的角色必須具有該角色的 `iam:PassRole` 權限。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "iam:PassRole"
        ],
        "Resource": [
          "arn:aws:iam::111122223333:role/<optimizer-role-name>"
        ]
      }
    ]
  }
  ```

------
+ 將下列信任政策新增至 AWS Glue 服務的角色，以擔任 IAM 角色來執行壓縮程序。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "",
        "Effect": "Allow",
        "Principal": {
          "Service": "glue.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
    ]
  }
  ```

------
+ <a name="catalog-optimizer-requirement"></a> （選用） 若要更新 Data Catalog 設定以啟用目錄層級資料表最佳化，所使用的 IAM 角色必須具有根目錄的 `glue:UpdateCatalog` 許可或 AWS Lake Formation `ALTER CATALOG` 許可。您可以使用 `GetCatalog` API 驗證目錄屬性。

# 目錄層級資料表最佳化工具
<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. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

1. 在導覽窗格中，選擇 **Data Catalog**。

1. 選取**目錄**索引標籤。

1. 選擇帳戶層級目錄。

1. 選擇**資料表最佳化**、**資料表最佳化**索引標籤下的**編輯**。您也可以從**動作**中選擇**編輯最佳化**。  
![\[螢幕擷取畫面顯示在目錄層級啟用最佳化的編輯選項。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/catalog-edit-optimizations.png)

1. 在**資料表最佳化**頁面上，設定下列選項：  
![\[螢幕擷取畫面顯示目錄層級的最佳化選項。\]](http://docs.aws.amazon.com/zh_tw/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>

 啟用目錄層級資料表最佳化時，只要透過 或 `UpdateTable` APIs、 AWS 管理主控台 SDK 或 建立`CreateTable`或更新 Apache Iceberg 資料表 AWS Glue 編目程式，就會為該資料表建立對等的資料表層級設定。

 建立或更新資料表之後，您可以驗證資料表詳細資訊以確認資料表最佳化。`Table optimization` 會顯示設為 `Catalog` 的 `Configuration source` 屬性。

![\[已套用具有目錄層級最佳化組態的 Apache Iceberg 資料表的影像。\]](http://docs.aws.amazon.com/zh_tw/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. 選擇**儲存**。

# 壓縮最佳化
<a name="compaction-management"></a>

 使用開放資料表格式 (例如，Apache Iceberg) 的 Amazon S3 資料湖會以 S3 物件形式儲存資料。在資料湖資料表中擁有數千個小型 Amazon S3 物件會增加中繼資料負荷，並影響讀取效能。 為 Iceberg 資料表 AWS Glue Data Catalog 提供受管壓縮，將小型物件壓縮成較大的物件，以便透過 Amazon Athena 和 Amazon EMR 和 AWS Glue ETL 任務等 AWS 分析服務獲得更好的讀取效能。Data Catalog 在不干擾並行查詢的情況下執行壓縮，並僅支援 Parquet 格式資料表的壓縮。

該資料表最佳化工具會持續監控資料表分區區，並在檔案數目和檔案大小超過閾值時啟動壓縮程序。

在 Data Catalog 中，壓縮程序會在資料表或其任何分區具有超過 100 個檔案時啟動。每個檔案都必須小於目標檔案大小的 75%。目標檔案大小由 `write.target-file-size-bytes` 資料表屬性定義，如果未明確設定，則預設為 512 MB。

 如需限制的詳細資訊，請參閱[受管資料壓縮支援的格式和限制](optimizer-notes.md#compaction-notes)。

**Topics**
+ [啟用壓縮最佳化工具](enable-compaction.md)
+ [停用壓縮最佳化工具](disable-compaction.md)

# 啟用壓縮最佳化工具
<a name="enable-compaction"></a>

 您可以使用 AWS Glue 主控台 AWS CLI或 AWS API，為 AWS Glue Data Catalog 中的 Apache Iceberg 資料表啟用壓縮。針對新的資料表，您可以選擇 Apache Iceberg 作為資料表格式，並在您建立資料表時啟用壓縮功能。新資料表依預設會停用壓縮功能。

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

**啟用壓縮功能**

1.  在 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 開啟 AWS Glue 主控台，並以資料湖管理員、資料表建立者或已在資料表上授予 `glue:UpdateTable`和 `lakeformation:GetDataAccess`許可的使用者身分登入。

1. 在導覽面板的 **Data Catalog** 下方，選擇**資料表**。

1. 在**資料表**頁面中，選擇您想要啟用壓縮的開放資料表格式的資料表，然後在**動作**功能表下依次選擇**最佳化**和**啟用**。

   您也可以透過選取**資料表詳細資訊**頁面上的**資料表最佳化**索引標籤，來啟用壓縮。選擇頁面下半區段的**資料表最佳化**索引標籤，然後選擇**啟用壓縮**。

   當您在 Data Catalog 中建立新的 Iceberg 資料表時，也可以使用**啟用最佳化**選項。

1. 在**啟用最佳化**頁面上，選擇**最佳化選項**下的**壓縮**。  
![\[具有「啟用壓縮」選項的 Apache Iceberg 資料表詳細資訊頁面。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/table-enable-compaction.png)

1. 接下來，從下拉式清單中選取 IAM 角色，其許可會在 [資料表最佳化先決條件](optimization-prerequisites.md) 區段中顯示。

   您也可以選擇**建立新 IAM 角色**選項，來建立具有執行壓縮所需許可的自訂角色。

    請依照以下步驟更新現有 IAM 角色：

   1.  若要更新 IAM 角色的權限政策，請在 IAM 主控台中，前往用於執行壓縮程序的 IAM 角色。

   1.  在**新增許可**區段中，選擇「建立政策」。在新開啟的瀏覽器視窗中，建立要搭配您角色使用的新政策。

   1. 在「建立政策」頁面上，選擇 `JSON` 索引標籤。將「先決條件」中顯示的 JSON 程式碼複製到政策編輯器欄位中。

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. 選擇壓縮策略。可用選項為：
   + **Binpack** – Binpack 是 Apache Iceberg 中的預設壓縮策略。其會將較小的資料檔案合併為較大的檔案，以獲得最佳效能。
   + **排序** – 在 Apache Iceberg 中排序是一種資料組織技術，可根據指定的資料欄叢集化檔案內的資訊，透過減少需要處理的檔案數目來大幅改善查詢效能。您可以使用排序順序欄位在 Iceberg 的中繼資料中定義排序順序，並且在指定多個資料欄時，資料會以資料欄在排序順序中出現的順序排序，以確保具有類似值的記錄儲存在檔案內。排序壓縮策略透過排序分區內所有檔案的資料，進一步進行最佳化。
   + **Z 排序** – 當您需要依具有相同重要性的多個資料欄排序時，Z 排序是一種整理資料的方式。與優先考慮某一資料欄的傳統排序不同，Z 排序為每個資料欄賦予了平衡的權重，協助您的查詢引擎在搜尋資料時讀取更少的檔案。

     該技術的運作方式是將不同資料欄的值的二進制數字組合在一起。例如，如果您有兩個資料欄中的數字 3 和 4，Z 排序會先將其轉換為二進制 (3 變成 011，4 變成 100)，然後交錯這些數字以建立新的值：011010。此交錯會建立一種模式，讓相關資料實際緊密相鄰。

     Z 排序對於多維查詢特別有效。例如，在跨多個維度查詢時，依收入、州/省和郵遞區號進行 Z 排序的客戶資料表可以提供比分階層排序更優越的效能。此組織允許以收入和地理位置的特定組合為目標的查詢，以快速找到相關資料，同時盡量減少不必要的檔案掃描。

1. **最小輸入檔案** – 觸發壓縮之前，分區中所需的資料檔案數目。

1. **刪除檔案閾值** – 資料檔案在符合壓縮條件之前所需的最少刪除操作。

1. 選擇**啟用最佳化**。

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

 下列範例顯示如何啟用壓縮功能。以有效的帳戶 ID 取代 AWS 帳戶 ID。將資料庫名稱和資料表名稱取代為實際的 Iceberg 資料表名稱和資料庫名稱。將 `roleArn` 取代為 IAM 角色的 AWS Resource Name (ARN)，以及具有執行壓縮程序之必要權限的 IAM 角色名稱。您可以將壓縮策略 `sort` 取代為其他支援的策略，例如 `z-order` 或 `binpack`。

順序」，視您的需求而定。

```
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"},
    "compactionConfiguration": {
      "icebergConfiguration": {"strategy": "sort"}
    }
  }'\
--type compaction
```

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

呼叫 [CreateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-CreateTableOptimizer) 操作以啟用資料表的壓縮。

------

啟用壓縮後，**資料表最佳化**索引標籤會在壓縮執行完成後，顯示下列壓縮詳細資訊：

開始時間  
在 Data Catalog 內啟動壓縮程序的時間。該值為以 UTC 時間為單位的時間戳記。

結束時間  
壓縮程序在 Data Catalog 中結束的時間。該值為以 UTC 時間為單位的時間戳記。

狀態  
壓縮執行的狀態。值會是 success 或 fail。

壓縮的檔案數  
壓縮的檔案總數。

壓縮的位元組數  
壓縮的位元組總數。

# 停用壓縮最佳化工具
<a name="disable-compaction"></a>

 您可以使用 AWS Glue 主控台 或 停用特定 Apache Iceberg 資料表的自動壓縮 AWS CLI。

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

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 開啟 AWS Glue 主控台。

1. 在左側導覽的 **Data Catalog** 下，選擇**資料表**。

1. 從資料表清單中，選擇您想要停用壓縮功能的 Iceberg 資料表。

1. 選擇**資料表詳細資訊**頁面下半部分的**資料表最佳化**索引標籤。

1. 從**動作**中，選擇**停用**，然後選擇**壓縮**。

1.  在確認訊息中，選擇**停用壓縮**。您可以在稍後重新啟用壓縮功能。

    當您確認後，壓縮功能會停用，而資料表的壓縮狀態會變回 `Disabled`。

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

在下列範例中，將帳戶 ID 取代為有效的 AWS 帳戶 ID。將資料庫名稱和資料表名稱取代為實際的 Iceberg 資料表名稱和資料庫名稱。將 取代`roleArn`為 IAM 角色 AWS 的資源名稱 (ARN)，以及具有執行壓縮所需許可的 IAM 角色實際名稱。

```
aws glue update-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":'false', "vpcConfiguration":{"glueConnectionName":"glue_connection_name"}}'\ 
  --type compaction
```

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

呼叫 [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer) 操作以停用特定資料表的壓縮功能。

------

# 快照保留最佳化
<a name="snapshot-retention-management"></a>

Apache Iceberg 快照保留功能可讓使用者在特定時間點查詢歷史資料，並將不需要的修改還原至其資料表。在 AWS Glue 資料目錄中，快照保留組態會控制這些快照 （資料表資料的版本） 在過期和移除之前保留多久。根據設定的保留期間或要保留的快照數目上限，自動移除較舊的快照，這有助於管理儲存成本和中繼資料負荷。

您可以設定以天為單位的保留期間，以及要為資料表保留的快照數目上限。從資料表中繼資料 AWS Glue 中移除比指定保留期間更舊的快照，同時將最新的快照保持在設定的限制內。從中繼資料移除舊快照後， 會 AWS Glue 刪除不再參考且對過期快照是唯一的對應資料和中繼資料檔案。這只允許剩餘保留快照的時間歷程查詢，同時回收過期快照資料使用的儲存空間。

**Topics**
+ [啟用快照保留最佳化工具](enable-snapshot-retention.md)
+ [更新快照保留最佳化工具](update-snapshot-retention.md)
+ [停用快照保留最佳化工具](disable-snapshot-retention.md)

# 啟用快照保留最佳化工具
<a name="enable-snapshot-retention"></a>

 您可以使用 AWS Glue 主控台 AWS CLI或 AWS API，為 Data Catalog 中的 Apache Iceberg 資料表啟用快照保留最佳化工具。針對新的資料表，您可以選擇 Apache Iceberg 作為資料表格式，並在您建立資料表時啟用快照保留最佳化工具。新資料表的快照保留預設為停用。

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

**啟用快照保留最佳化工具**

1.  在 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 開啟 AWS Glue 主控台，並以資料湖管理員、資料表建立者或已在資料表上授予 `glue:UpdateTable`和 `lakeformation:GetDataAccess`許可的使用者身分登入。

1. 在導覽面板的 **Data Catalog** 下方，選擇**資料表**。

1. 在**資料表**頁面上，選擇要啟用快照保留最佳化工具的 Iceberg 資料表，然後在**動作**功能表下，選擇**最佳化**下的**啟用**。

   您也可以透過選取資料表並開啟**資料表詳細資訊**頁面，來啟用最佳化。選擇頁面下半部分的**資料表最佳化**索引標籤，然後選擇**啟用快照保留**。

1. 在**啟用最佳化**頁面的**最佳化組態**下，您具有兩個選項：**使用預設設定**或**自訂設定**。如果您選擇使用預設設定， AWS Glue 會使用 Iceberg 資料表組態中定義的屬性來決定快照保留期間和要保留的快照數目。如果沒有此組態， 會 AWS Glue 保留一個快照五天，並刪除與過期快照相關聯的檔案。

1.  接著，選擇 AWS Glue 可代表您擔任的 IAM 角色，以執行最佳化工具。如需 IAM 角色所需許可的詳細資訊，請參閱[資料表最佳化先決條件](optimization-prerequisites.md)一節。

   請依照以下步驟更新現有 IAM 角色：

   1.  若要更新 IAM 角色的權限政策，請在 IAM 主控台中，前往用於執行壓縮程序的 IAM 角色。

   1.  在新增許可區段中，選擇「建立政策」。在新開啟的瀏覽器視窗中，建立要搭配您角色使用的新政策。

   1. 在建立政策頁面上，選擇 JSON 標籤。將「先決條件」中顯示的 JSON 程式碼複製到政策編輯器欄位中。

1. 如果您要手動設定**快照保留組態**的值，請選擇**自訂設定**。  
![\[使用「啟用保留」>「自訂設定」選項的 Apache Iceberg 資料表詳細資訊頁面。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/table-enable-retention.png)

1. 選擇方塊 **將選取的 IAM 角色套用至選取的最佳化工具**選項，以對所有啟用的最佳化工具使用單一 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. 接下來，在**快照保留組態**下，選擇使用 [Iceberg 資料表組態](https://iceberg.apache.org/docs/1.5.2/configuration/#table-behavior-properties)中指定的值，或指定快照保留期間的自訂值 (history.expire.max-snapshot-age-ms)、要保留的快照數目下限 (history.expire.min-snapshots-to-keep)，以及連續快照刪除任務執行之間的小時數。

1.  在資料表最佳化工具從資料表中繼資料中刪除舊快照時，選擇**刪除關聯的檔案**以刪除基礎檔案。

    如果您未選擇此選項，從資料表中繼資料中移除較舊的快照時，關聯的檔案會保留在儲存體中作為孤立檔案。

1. 接著，閱讀注意聲明，然後選擇**我確認**以繼續。
**注意**  
 在 Data Catalog 中，快照保留最佳化工具會遵守由分支和標籤層級保留政策控制的生命週期。如需詳細資訊，請參閱 Iceberg 文件中的[分支和標記](https://iceberg.apache.org/docs/latest/branching/#overview)一節。

1. 檢閱組態，然後選擇**啟用最佳化**。

   等待幾分鐘，讓保留最佳化工具執行，並根據組態使舊快照過期。

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

 若要在 中啟用新 Iceberg 資料表的快照保留 AWS Glue，您需要建立 類型的資料表最佳化工具，`retention`並將 `true`中的 `enabled` 欄位設定為 `table-optimizer-configuration`。您可以使用 AWS CLI 命令`create-table-optimizer`或 來執行此操作`update-table-optimizer`。此外，您需要根據您的要求指定保留組態欄位，例如 `snapshotRetentionPeriodInDays` 和 `numberOfSnapshotsToRetain`。

下列範例示範如何啟用快照保留最佳化工具。將帳戶 ID 取代為有效的 AWS 帳戶 ID。將資料庫名稱和資料表名稱取代為實際的 Iceberg 資料表名稱和資料庫名稱。將 取代`roleArn`為 IAM 角色 AWS 的資源名稱 (ARN)，以及具有執行快照保留最佳化工具所需許可的 IAM 角色名稱。

```
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"}, "retentionConfiguration":{"icebergConfiguration":{"snapshotRetentionPeriodInDays":7,"numberOfSnapshotsToRetain":3,"cleanExpiredFiles":'true'}}}'\
  --type retention
```

 此命令會為指定目錄、資料庫和區域中指定的 Iceberg 資料表建立保留最佳化工具。table-optimizer-configuration 指定要使用的 IAM 角色 ARN、啟用最佳化工具，以及設定保留組態。在此範例中，其會保留快照 7 天，至少保留 3 個快照，並清除過期檔案。
+  snapshotRetentionPeriodInDays – 快照過期前保留的天數。預設值為 `5`。
+ numberOfSnapshotsToRetain – 要保留的快照數目下限，即使其早於保留期間。預設值為 `1`。
+ cleanExpiredFiles – 布林值，指出是否要在快照過期後刪除過期的資料檔案。預設值為 `true`。

   設定為 true 時，較舊的快照會從資料表中繼資料中移除，而基礎檔案會刪除。如果將此參數設定為 false，較舊的快照會從資料表中繼資料中移除，但基礎檔案會保留在儲存體中作為孤立檔案。

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

呼叫 [CreateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-CreateTableOptimizer) 操作以啟用資料表的快照保留最佳化工具。

------

啟用壓縮功能後，**資料表最佳化**索引標籤會顯示下列壓縮詳細資料 (大約 15-20 分鐘後)：

開始時間  
快照保留最佳化工具啟動的時間。該值為以 UTC 時間為單位的時間戳記。

執行時間  
時間顯示最佳化工具完成任務所需的時間。該值為以 UTC 時間為單位的時間戳記。

狀態  
最佳化工具執行的狀態。值會是 success 或 fail。

刪除的資料檔案數  
刪除的檔案總數。

刪除的資訊清單檔案數  
刪除的資訊清單檔案總數。

刪除的資訊清單數  
刪除的資訊清單總數。

# 更新快照保留最佳化工具
<a name="update-snapshot-retention"></a>

 您可以使用 AWS Glue 主控台 AWS CLI或 UpdateTableOptimizer API，更新特定 Apache Iceberg 資料表快照保留最佳化工具的現有組態。

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

**更新快照保留組態**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 開啟 AWS Glue 主控台。

1. 選擇 **Data Catalog**，然後選擇**資料表**。從資料表清單中，選擇您要更新快照保留最佳化工具組態的 Iceberg 資料表。

1. 在**資料表詳細資訊**頁面的下部，選取**資料表最佳化**索引標籤，然後選擇**編輯**。也可以從頁面右上角的**動作**功能表中選擇**最佳化**下的**編輯**。

1.  在**編輯最佳化**頁面中，進行所需的變更。

1.  選擇**儲存**。

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

 若要使用 更新快照保留最佳化工具 AWS CLI，您可以使用下列命令：

```
aws glue update-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"},"retentionConfiguration":{"icebergConfiguration":{"snapshotRetentionPeriodInDays":7,"numberOfSnapshotsToRetain":3,"cleanExpiredFiles":'true'}}}' \
 --type retention
```

 此命令會更新指定目錄、資料庫和區域中指定資料表的保留組態。關鍵參數為：
+  snapshotRetentionPeriodInDays – 快照過期前保留的天數。預設值為 `1`。
+ numberOfSnapshotsToRetain – 要保留的快照數目下限，即使其早於保留期間。預設值為 `5`。
+ cleanExpiredFiles – 布林值，指出是否要在快照過期後刪除過期的資料檔案。預設值為 `true`。

   設定為 true 時，較舊的快照會從資料表中繼資料中移除，並且會刪除其基礎檔案。如果將此參數設定為 false，較舊的快照會從資料表中繼資料中移除，但基礎檔案會保留在儲存體中作為孤立檔案。

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

若要更新資料表最佳化工具，可以使用 `UpdateTableOptimizer` API。此 API 可讓您更新現有資料表最佳化工具的組態，以進行壓縮、保留或孤立檔案移除。請求參數包括：
+ catalogId (必要)：包含資料表的目錄 ID 
+  databaseName (選用)：包含資料表的資料庫名稱 
+  tableName (選用)：資料表的名稱 
+  type (必要)：資料表最佳化工具的類型 (壓縮、保留或孤立檔案刪除) 
+  retentionConfiguration (必要)：資料表最佳化工具的更新組態，包括角色 ARN、啟用狀態、保留組態和孤立檔案移除組態。

------

# 停用快照保留最佳化工具
<a name="disable-snapshot-retention"></a>

 您可以使用 AWS Glue 主控台 或 停用特定 Apache Iceberg 資料表的快照保留最佳化工具 AWS CLI。

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

**停用快照保留**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 開啟 AWS Glue 主控台。

1. 選擇 **Data Catalog**，然後選擇**資料表**。從資料表清單中，選擇要停用最佳化工具以保留快照的 Iceberg 資料表。

1. 在**資料表詳細資訊**頁面的下半部分中，選擇**動作**下的**資料表最佳化**和**停用****快照保留**。

   您還可以從頁面右上角的**動作**功能表中選擇**最佳化**下的**停用**。

1.  在確認訊息中，選擇**停用**。您可以稍後重新啟用快照保留最佳化工具。

    在確認後，快照保留最佳化工具會停用，且快照保留的狀態會回復為 `Not enabled`。

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

在下列範例中，將帳戶 ID 取代為有效的 AWS 帳戶 ID。將資料庫名稱和資料表名稱取代為實際的 Iceberg 資料表名稱和資料庫名稱。將 取代`roleArn`為 IAM 角色 AWS 的資源名稱 (ARN)，以及具有執行保留最佳化工具所需許可的 IAM 角色實際名稱。

```
aws glue update-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role", "vpcConfiguration":{"glueConnectionName":"glue_connection_name"}, "enabled":'false'}'\ 
  --type retention
```

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

呼叫 [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer) 操作，以停用特定資料表的快照保留最佳化工具。

------

# 刪除孤立檔案
<a name="orphan-file-deletion"></a>

 AWS Glue Data Catalog 可讓您從 Iceberg 資料表中移除孤立檔案。孤立檔案是存在於指定資料表位置下 Amazon S3 資料來源中的未參考檔案，其不會受到 Iceberg 資料表中繼資料追蹤，且早於您設定的存留期限制。由於壓縮、分區刪除或資料表重寫等操作失敗，這些孤立檔案可能會隨著時間累積，並佔用不必要的儲存空間。

中的孤立檔案刪除最佳化工具會 AWS Glue 掃描資料表中繼資料和實際資料檔案、識別孤立檔案，然後刪除它們以回收儲存空間。最佳化工具只會移除在最佳化工具建立日期之後建立並且也符合所設定刪除條件的檔案。絕對不會刪除在最佳化工具建立日期之前或當天建立的檔案。

**孤立檔案刪除邏輯**

1. 日期檢查 – 比較檔案建立日期與最佳化工具建立日期。如果檔案早於或等於最佳化工具建立日期，則會略過檔案。

1. 最佳化工具組態檢查 – 如果檔案晚於最佳化工具建立日期， 則會根據設定的存留期限制評估檔案。如果檔案符合刪除條件，最佳化工具會刪除其。如果檔案不符合條件，則會略過。

 可以在 Data Catalog 中建立孤立檔案刪除資料表最佳化工具，以啟動孤立檔案刪除。

**重要**  
 根據預設，孤立檔案刪除會跨 AWS Glue 資料表位置評估檔案。雖然可以使用 API 參數來設定子字首以限制評估範圍，但必須確保資料表位置不包含來自其他資料來源或資料表的檔案。如果資料表位置與其他資料來源重疊，該服務可能會進行識別，並將不相關的檔案作為孤立檔案進行刪除。

**Topics**
+ [啟用孤立檔案刪除](enable-orphan-file-deletion.md)
+ [更新孤立檔案刪除最佳化工具](update-orphan-file-deletion.md)
+ [停用孤立檔案刪除](disable-orphan-file-deletion.md)

# 啟用孤立檔案刪除
<a name="enable-orphan-file-deletion"></a>

 您可以使用 AWS Glue 主控台 AWS CLI或 AWS API，為 Data Catalog 中的 Apache Iceberg 資料表啟用孤立檔案刪除。針對新的資料表，您可以選擇 Apache Iceberg 作為資料表格式，並在您建立資料表時啟用孤立檔案刪除最佳化工具。新資料表的快照保留預設為停用。

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

**啟用孤立檔案刪除**

1.  在 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 開啟 AWS Glue 主控台，並以資料湖管理員、資料表建立者或已在資料表上授予 `glue:UpdateTable`和 `lakeformation:GetDataAccess`許可的使用者身分登入。

1. 在導覽面板的 **Data Catalog** 下方，選擇**資料表**。

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 ]

 若要在 中啟用 Iceberg 資料表的孤立檔案刪除 AWS Glue，您需要建立 類型的資料表最佳化工具，`orphan_file_deletion`並將 `enabled` 欄位設定為 true。若要使用 為 Iceberg 資料表建立孤立檔案刪除最佳化工具 AWS CLI，您可以使用下列命令：

```
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 – IAM 角色的 ARN，具有存取 S3 儲存貯體和 Glue 資源的許可。
+ enabled – 設定為 true 以啟用最佳化工具。
+ orphanFileRetentionPeriodInDays – 孤立檔案刪除之前保留的天數 (至少 1 天)。
+ 類型 – 設定為 orphan\$1file\$1deletion 以建立孤立檔案刪除最佳化工具。

 建立資料表最佳化工具之後，其會定期執行孤立檔案刪除 (如果啟用，則為每天刪除一次)。您可以使用 `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) 操作，為特定資料表建立孤立檔案刪除最佳化工具。

------

# 更新孤立檔案刪除最佳化工具
<a name="update-orphan-file-deletion"></a>

 您可以修改孤立檔案刪除最佳化工具的組態，例如使用 AWS Glue 主控台變更孤立檔案的保留期間或最佳化工具使用的 IAM 角色 AWS CLI，或 `UpdateTableOptimizer`操作。

------
#### [ AWS 管理主控台 ]

**若要更新孤立檔案刪除最佳化工具**

1.  選擇 **Data Catalog**，然後選擇**資料表**。從資料表清單中，選擇您要更新孤立檔案刪除最佳化工具組態的資料表。

1. 在**資料表詳細資訊**頁面的下部，選擇**資料表最佳化**，然後選擇**編輯**。

1.  在**編輯最佳化**頁面中，進行所需的變更。

1.  選擇**儲存**。

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

 您可以使用 `update-table-optimizer`呼叫來更新 中的孤立檔案刪除最佳化工具 AWS Glue，您可以使用 呼叫。這可讓您修改 `icebergConfiguration` 欄位中的 `OrphanFileDeletionConfiguration`，您可以在其中指定更新的 `OrphanFileRetentionPeriodInDays` 來設定保留孤立檔案的天數，指定要從中刪除孤立檔案的 Iceberg 資料表位置。

```
aws glue update-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":5}}}' \
 --type orphan_file_deletion
```

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

呼叫 [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer) 操作來更新資料表的孤立檔案刪除最佳化工具。

------

 

# 停用孤立檔案刪除
<a name="disable-orphan-file-deletion"></a>

 您可以使用 AWS Glue 主控台或 停用特定 Apache Iceberg 資料表的孤立檔案刪除最佳化工具 AWS CLI。

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

**停用孤立檔案刪除**

1. 選擇 **Data Catalog**，然後選擇**資料表**。從資料表清單中，選擇要停用最佳化工具以刪除孤立檔案的 Iceberg 資料表。

1. 在**資料表詳細資訊**頁面的下半部分，選擇**資料表最佳化**索引標籤。

1. 選擇**動作**，然後選擇**停用**、**孤立檔案刪除**。

   您還可以從**動作**功能表的**最佳化**下選擇**停用**。

1.  在確認訊息中，選擇**停用**。您可以稍後重新啟用孤立檔案刪除最佳化工具。

    確認後，孤立檔案刪除最佳化工具會停用，而孤立檔案刪除的狀態會回復為 `Not enabled`。

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

在下列範例中，將帳戶 ID 取代為有效的 AWS 帳戶 ID。將資料庫名稱和資料表名稱取代為實際的 Iceberg 資料表名稱和資料庫名稱。將 取代`roleArn`為 IAM 角色 AWS 的資源名稱 (ARN)，以及具有停用最佳化工具所需許可的 IAM 角色實際名稱。

```
aws glue update-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":'false'}'\ 
  --type orphan_file_deletion
```

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

呼叫 [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer) 操作來停用特定資料表的快照保留最佳化工具。

------

# 檢視最佳化詳細資訊
<a name="view-optimization-status"></a>

您可以在 AWS Glue 主控台、 AWS CLI或使用 AWS API 操作檢視 Apache Iceberg 資料表的最佳化狀態。

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

**檢視 Iceberg 資料表的最佳化狀態 (主控台)**
+ 您可以從 **Data Catalog** 下的資料表清單中選擇 Iceberg 資料表，以在 AWS Glue 主控台上檢視 Iceberg **資料表**的最佳化狀態。在**資料表最佳化**下。選擇**檢視全部**  
![\[具有「啟用壓縮」選項的 Apache Iceberg 資料表詳細資訊頁面。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/table-list-compaction-status.png)

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

您可以使用 檢視最佳化詳細資訊 AWS CLI。

在下列範例中，將帳戶 ID 取代為有效的 AWS 帳戶 ID、資料庫名稱，並將資料表名稱取代為實際的 Iceberg 資料表名稱。對於 `type`，請提供並最佳化類型。可接受的值是 `compaction`、`retention` 和 `orphan-file-deletion`。
+ **取得資料表的上次壓縮執行詳細資料**

  ```
  aws get-table-optimizer \
    --catalog-id 123456789012 \
    --database-name iceberg_db \
    --table-name iceberg_table \
    --type compaction
  ```
+ 使用下列範例擷取特定資料表的最佳化工具歷史記錄。

  ```
  aws list-table-optimizer-runs \
    --catalog-id 123456789012 \
    --database-name iceberg_db \
    --table-name iceberg_table \
    --type compaction
  ```
+ 下列範例顯示如何擷取多個最佳化工具的最佳化執行和組態詳細資料。您最多可以指定 20 個最佳化工具。

  ```
  aws glue batch-get-table-optimizer \
  --entries '[{"catalogId":"123456789012", "databaseName":"iceberg_db", "tableName":"iceberg_table", "type":"compaction"}]'
  ```

------
#### [ API ]
+ 使用 `GetTableOptimizer` 操作來擷取最佳化工具的上次執行詳細資料。
+  使用 `ListTableOptimizerRuns` 操作來擷取特定資料表中特定最佳化工具的歷史記錄。您可以在單一 API 呼叫中指定 20 個最佳化工具。
+ 使用 [BatchGetTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-BatchGetTableOptimizer) 操作來擷取帳戶中多個最佳化工具的組態詳細資料。

------

# 檢視 Amazon CloudWatch 指標
<a name="view-optimization-metrics"></a>

 成功執行資料表最佳化工具之後，該服務會建立有關最佳化任務效能的 Amazon CloudWatch 指標。可以前往 **CloudWatch 指標**，然後選擇**指標**、**所有指標**。您可以依特定命名空間 （例如 AWS Glue)、資料表名稱或資料庫名稱來篩選指標。

 如需詳細資訊，請參閱《*Amazon CloudWatch 使用者指南*》中的[檢視可用指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html)。

****壓縮****
+ 壓縮的位元組數 
+ 壓縮的檔案數
+ 分配至任務的 DPU 數 
+ 任務持續時間 (小時) 

****快照保留****
+ 已刪除的資料檔案數 
+ 已刪除的資訊清單檔案數
+ 已刪除的資訊清單數 
+ 任務持續時間 (小時)

****孤立檔案刪除****
+ 已刪除的孤立檔案數 
+ 任務持續時間 (小時) 

# 刪除最佳化工具
<a name="delete-optimizer"></a>

您可以使用 AWS CLI 或 AWS API 操作刪除資料表的最佳化工具及相關中繼資料。

執行下列 AWS CLI 命令來刪除資料表的最佳化歷史記錄。您需要指定最佳化工具 `type` 以及目錄 ID、資料庫名稱和資料表名稱。可接受的值：`compaction`、`retention` 和 `orphan_file_deletion`。

```
aws glue delete-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --type compaction
```

 使用 `DeleteTableOptimizer` 操作刪除資料表的最佳化工具。

# 考量和限制
<a name="optimizer-notes"></a>

 本節包含在 AWS Glue Data Catalog中使用資料表最佳化工具時應考慮的事項。

## 耐用性和正確性
<a name="durability-correctness"></a>

**S3 資料表位置：**

當多個 AWS Glue Data Catalog 資料表共用相同的 Amazon S3 位置並啟用最佳化工具時，一個資料表的快照保留或孤立檔案刪除最佳化工具可能會刪除另一個資料表仍然參考的檔案。確保啟用最佳化工具的每個資料表都有唯一的 Amazon S3 位置，該位置不會與任何其他資料表共用，包括不同資料庫中的資料表。

**S3 生命週期過期：**

適用於 Iceberg 資料表儲存位置的 Amazon S3 生命週期過期規則可以刪除仍然由作用中快照參考的資訊清單和資料檔案。如果您的儲存貯體具有生命週期過期規則，請確保它們排除 Iceberg 資料表儲存路徑。

## 受管資料壓縮支援的格式和限制
<a name="compaction-notes"></a>

資料壓縮支援各種資料類型和壓縮格式來讀取和寫入資料，包括從加密資料表中讀取資料。

**並行控制：**

 Apache Iceberg 支援樂觀並行控制，允許多個寫入器同時執行操作。在遞交時偵測並解決衝突。使用串流管道時，請透過資料表屬性和壓縮設定來設定適當的重試設定，以有效地處理並行寫入。如需詳細指引，請參閱有關在 [Iceberg 資料表中管理並行寫入](https://aws.amazon.com/blogs/big-data/manage-concurrent-write-conflicts-in-apache-iceberg-on-the-aws-glue-data-catalog/) AWS 的大數據部落格。

**壓縮重試：**

 當壓縮操作連續四次失敗時， AWS Glue 目錄資料表最佳化會自動暫停最佳化工具，以防止不必要的運算資源消耗。首先調查日誌，並嘗試了解壓縮重複失敗的原因。若要繼續壓縮最佳化，您可以透過 AWS Glue 主控台或 API 重新啟用最佳化工具。

 **資料壓縮支援：**
+ **加密** – 資料壓縮僅支援預設的 Amazon S3 加密 (SSE-S3) 和伺服器端 KMS 加密 (SSE-KMS)。
+ **壓縮策略** – Binpack、排序和 Z 順序排序
+ 當儲存基礎資料的 Amazon S3 儲存貯體位於其他帳戶中時，您可以從 Data Catalog 所在的帳戶中執行壓縮程序。若要執行此程序，壓縮角色需要 Amazon S3 儲存貯體的存取權。

 **資料壓縮目前不支援：**
+ **跨帳戶資料表壓縮** – 您無法在跨帳戶資料表上執行壓縮程序。
+ **跨區域戶資料表壓縮** – 您無法在跨區域資料表上執行壓縮。
+ **在資源連結上啟用壓縮功能**
+ **Amazon S3 Express One Zone 儲存類別中的資料表 ** – 您無法在 Amazon S3 Express One Zone Iceberg 資料表上執行壓縮。
+ **Z-order 壓縮策略不支援下列資料類型：**
  + Decimal (小數)
  + TimestampWithoutZone

## 快照保留和孤立檔案刪除最佳化工具的考量
<a name="retention-notes"></a>

下列考量適用於快照保留和孤立檔案刪除最佳化工具。
+ 快照保留和孤立檔案刪除程序的上限為每次執行刪除 1,000,000 個檔案。刪除過期快照時，如果刪除的合格檔案數目超過 1,000,000，則任何超出該閾值的剩餘檔案將繼續以孤立檔案的形式存在於資料表儲存中。
+ 只有在滿足兩個條件時，快照保留最佳化工具才會保留快照：要保留的快照數目下限和指定的保留期間。
+ 快照保留最佳化工具會從 Apache Iceberg 刪除過期的快照中繼資料，以防止進行過期快照的時間歷程查詢，並選擇性地刪除相關聯的資料檔案。
+  孤立檔案刪除最佳化工具會刪除 Iceberg 中繼資料不再參考的孤立資料和中繼資料檔案，前提是其建立時間早於最佳化工具執行後的孤立檔案刪除保留期。
+ Apache Iceberg 透過分支和標籤來促進版本控制，其為特定快照狀態的具名標誌。每個分支和標籤都遵循自己的獨立生命週期，由其各自層級定義的保留政策管理。 AWS Glue Data Catalog 最佳化工具會將這些生命週期政策納入考量，確保遵守指定的保留規則。分支和標籤層級保留政策優先於最佳化工具組態。

   如需詳細資訊，請參閱 Apache Iceberg 文件中的[分支和標記](https://iceberg.apache.org/docs/nightly/branching/)。
+ 快照保留和孤立檔案刪除最佳化工具將根據設定的參數來刪除符合清除資格的檔案。透過在適當的儲存貯體上實作 S3 版本控制和生命週期政策，加強您對檔案刪除的控制。

   如需有關設定版本控制和建立生命週期規則的詳細說明，請參閱[https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)。
+  為了正確判斷孤立檔案，請確保提供的資料表位置和任何子路徑不會與任何其他資料表或資料來源的資料重疊或包含其中的資料。如果路徑重疊，則可能會因為意外刪除檔案而導致無法復原的資料遺失。

## 偵錯 OversizedAllocationException 例外狀況
<a name="debug-exception"></a>

若要解決 `OversizedAllocationException` 例外狀況：
+ 減少向量化讀取器的批量大小並檢查。預設批量大小為 5000。在 `read.parquet.vectorization.batch-size` 中進行控制。
  + 如果即使在多個變化後仍無法運作，則請關閉向量化。在 `read.parquet.vectorization.enabled` 中進行控制。

# 資料表最佳化工具的支援區域
<a name="regions-optimizers"></a>

的資料表最佳化功能 （壓縮、快照保留和孤立檔案刪除） AWS Glue Data Catalog 提供如下 AWS 區域：
+ 亞太地區 (東京)
+ 亞太地區 (首爾)
+ 亞太地區 (孟買)
+ 亞太地區 (新加坡)
+ 亞太地區 (悉尼)
+ 亞太地區 (雅加達)
+ 加拿大 (中部)
+ 歐洲 (愛爾蘭)
+ 歐洲 (倫敦)
+ 歐洲 (法蘭克福)
+ 歐洲 (斯德哥爾摩)
+ 美國東部 (維吉尼亞北部)
+ 美國東部 (俄亥俄)
+ 美國西部 (奧勒岡)
+ 南美洲 (聖保羅)

# 最佳化 Iceberg 資料表的查詢效能
<a name="iceberg-column-statistics"></a>

Apache Iceberg 是適用於大型分析資料集的高效能開放資料表格式。 AWS Glue 支援計算和更新 Iceberg 資料表中每個資料欄的不同值 (NDV) 數目。這些統計資料可為使用大規模資料集的資料工程師和科學家提供更好的查詢最佳化、資料管理和效能效率。

 AWS Glue 估計 Iceberg 資料表每一欄中的不同值數目，並將其存放在與 Iceberg 資料表快照相關聯的 Amazon S3 上的 [Puffin ](https://iceberg.apache.org/puffin-spec/)檔案中。Puffin 是一種 Iceberg 檔案格式，旨在存放諸如索引、統計資料和草圖等中繼資料。將草圖存放在與快照關聯的 Puffin 檔案中，可確保 NDV 統計資料的交易一致性和新鮮度。

您可以將 設定為使用 AWS Glue 主控台或 執行資料欄統計資料產生任務 AWS CLI。當您啟動程序時， 會在背景 AWS Glue 啟動 Spark 任務，並更新 Data Catalog 中的 AWS Glue 資料表中繼資料。您可以使用 AWS Glue 主控台 AWS CLI 或 或呼叫 [GetColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_GetColumnStatisticsForTable.html) API 操作來檢視資料欄統計資料。

**注意**  
如果您使用 AWS Lake Formation 許可來控制對資料表的存取，資料欄統計資料任務擔任的角色需要完整資料表存取權才能產生統計資料。

**Topics**
+ [產生資料欄統計資料的先決條件](iceberg-column-stats-prereqs.md)
+ [為 Iceberg 資料表產生資料欄統計資料](iceberg-generate-column-stats.md)
+ [另請參閱](#see-also-iceberg-stats)

# 產生資料欄統計資料的先決條件
<a name="iceberg-column-stats-prereqs"></a>

若要產生或更新 Iceberg 資料表的資料欄統計資料，統計資料產生任務會代表您擔任 AWS Identity and Access Management (IAM) 角色。根據授與角色的權限，資料欄統計資料產生任務可以從 Amazon S3 資料存放區讀取資料。

當您設定資料欄統計資料產生任務時， AWS Glue 可讓您建立包含`AWSGlueServiceRole` AWS 受管政策加上指定資料來源所需內嵌政策的角色。

如果指定現有角色來產生資料欄統計資料，請確定其包含 `AWSGlueServiceRole` 政策或同等政策 (或此政策的縮減版本)，以及必要的內嵌政策。

如需所需許可的詳細資訊，請參閱[產生資料欄統計資料的先決條件](column-stats-prereqs.md)。

# 為 Iceberg 資料表產生資料欄統計資料
<a name="iceberg-generate-column-stats"></a>

請依照下列步驟，使用 AWS Glue 主控台或 AWS CLI 或 或執行 **StartColumnStatisticsTaskRun** 操作，在 Data Catalog 中設定產生統計資料的排程。

**若要產生資料欄統計資料**

1. 在 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 登入 AWS Glue 主控台。

1. 選擇 Data Catalog 下方的**資料表**。

1. 從清單中選擇 Iceberg 資料表。

1. 選擇**動作**功能表下方的**資料欄統計資料**、**隨需產生**。

   您也可選擇**資料表**頁面下半區段之**資料欄統計資料**索引標籤下的**產生統計資料**按鈕。

1. 在**產生統計資料**頁面中，提供統計資料產生詳細資訊。請遵循 [根據排程產生資料欄統計資料](generate-column-stats.md) 部分中的步驟 6-11，為 Iceberg 資料表設定統計資料產生排程。

   也可以遵循 [隨需產生資料欄統計資料](column-stats-on-demand.md) 中的說明，選擇隨需產生資料欄統計資料
**注意**  
取樣選項不適用於 Iceberg 資料表。

   AWS Glue 會將 Iceberg 資料表每個資料欄的不同值數目，計算為遞交至 Amazon S3 位置中指定快照 ID 的新 Puffin 檔案。

## 另請參閱
<a name="see-also-iceberg-stats"></a>
+ [檢視資料欄統計資料](view-column-stats.md)
+ [檢視資料欄統計資料任務執行](view-stats-run.md)
+ [停止資料欄統計資料任務執行](stop-stats-run.md)
+ [刪除資料欄統計資料](delete-column-stats.md)