

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

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

AWS Lake Formation 中繼資料表包含資料湖中資料的相關資訊，包括結構描述資訊、分割區資訊和資料位置。這些資料表存放在 AWS Glue Data Catalog 中。您可以使用它們來存取資料湖中的基礎資料，並使用 Lake Formation 許可管理該資料。資料表存放在 Data Catalog 的資料庫中。

有多種方法可以建立 Data Catalog 資料表：
+ 在 中執行爬蟲程式AWS Glue。請參閱《 *AWS Glue 開發人員指南*[》中的定義爬蟲程式](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)。
+ 建立並執行工作流程。請參閱 [在 Lake Formation 中使用工作流程匯入資料](workflows.md)。
+ 使用 Lake Formation 主控台、AWS GlueAPI 或 AWS Command Line Interface () 手動建立資料表AWS CLI。
+ 使用 建立資料表 Amazon Athena。
+ 建立外部帳戶中資料表的資源連結。請參閱 [建立資源連結](creating-resource-links.md)。

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

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

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

您可以使用 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 許可政策。如需詳細資訊，請參閱[管理 Lake Formation 許可](managing-permissions.md)。

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

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

## 先決條件
<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 位置新增至您的資料湖](register-data-lake.md)。

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

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

     如需資料位置許可的詳細資訊，請參閱 [基礎資料存取控制](access-control-underlying-data.md)。

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

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

您可以使用 Lake Formation 主控台或此頁面所記載 AWS Command Line Interface 的方式建立 Iceberg v1 和 v2 資料表。您也可以使用 AWS Glue 主控台或 建立 Iceberg 資料表 AWS Glue 編目程式。如需詳細資訊，請參閱《 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/lakeformation/](https://console.aws.amazon.com/lakeformation/) 開啟 Lake Formation 主控台。

1. 在 Data Catalog 下，選擇**資料表**，然後使用**建立資料表**按鈕來指定下列屬性：
   + **資料表名稱**：輸入資料表的名稱。如果使用 Athena 來存取資料表，請使用《Amazon Athena 使用者指南》中的這些[命名秘訣](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html)。
   + **資料庫**：選擇現有的資料庫或建立新的資料庫。
   + **描述**：資料表的描述。您可以撰寫說明，來協助您了解資料表的內容。
   + **資料表格式**：針對**資料表格式**，選擇 Apache Iceberg。  
![\[使用資料表最佳化選項選取 Apache Iceberg 資料表選項。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/table-optimization.png)
   + **資料表最佳化**
     + **壓縮** – 合併和重寫資料檔案，移除過時的資料，並將分段資料合併為更大、更有效的檔案。
     + **快照保留 **– 快照是 Iceberg 資料表的時間戳記版本。快照保留組態可讓客戶強制執行保留快照的時間長度，以及要保留的快照數量。設定快照保留最佳化工具可透過移除較舊、不必要的快照及其相關聯的基礎檔案，協助管理儲存體負荷。
     + **孤立檔案刪除** – 孤立檔案是 Iceberg 資料表中繼資料不再參考的檔案。這些檔案可能會隨著時間累積，特別是在資料表刪除或 ETL 任務失敗等操作之後。啟用孤立檔案刪除 AWS Glue 可讓 定期識別和移除這些不必要的檔案，釋放儲存空間。

     如需詳細資訊，請參閱[最佳化 Iceberg 資料表](https://docs.aws.amazon.com/glue/latest/dg/table-optimizers.html)。
   + **IAM 角色**：若要執行壓縮，服務會代表您擔任 IAM 角色。您可以使用下拉式選單選擇 IAM 角色。請確認角色具有啟用壓縮的必要權限。

     若要進一步了解所需的許可，請參閱[資料表最佳化先決條件](https://docs.aws.amazon.com/glue/latest/dg/optimization-prerequisites.html)。
   + **位置**：指定 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/"
            }
        }'
```

------

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

Lake Formation 支援多個資料表最佳化選項，以增強 AWS 分析引擎和 ETL 任務所使用的 Apache Iceberg 資料表管理和效能。這些最佳化工具可提供高效儲存使用率、改善的查詢效能以及有效的資料管理。Lake Formation 提供三種類型的資料表最佳化工具：
+ **壓縮** – 資料壓縮會壓縮小型資料檔案，以減少儲存用量並提高讀取效能。合併和重寫資料檔案，以移除過時的資料，並將分段資料合併為更大、更有效的檔案。壓縮可設定為自動執行，或視需要手動觸發。
+ **快照保留 **– 快照是 Iceberg 資料表的時間戳記版本。快照保留組態可讓客戶強制執行保留快照的時間長度，以及要保留的快照數量。設定快照保留最佳化工具可透過移除較舊、不必要的快照及其相關聯的基礎檔案，協助管理儲存體負荷。
+ **孤立檔案刪除** – 孤立檔案是 Iceberg 資料表中繼資料不再參考的檔案。這些檔案可能會隨著時間累積，特別是在資料表刪除或 ETL 任務失敗等操作之後。啟用孤立檔案刪除 AWS Glue 可讓 定期識別和移除這些不必要的檔案，釋放儲存空間。

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

如需詳細資訊，請參閱《 AWS Glue 開發人員指南》中的[最佳化 Iceberg 資料表](https://docs.aws.amazon.com/glue/latest/dg/table-optimizers.html)。

# 搜尋資料表
<a name="searching-for-tables"></a>

您可以使用 AWS Lake Formation 主控台，依名稱、位置、包含資料庫等來搜尋 Data Catalog 資料表。搜尋結果只會顯示您擁有 Lake Formation 許可的資料表。

**搜尋資料表 （主控台）**

1. 登入 AWS 管理主控台 並開啟 Lake Formation 主控台，網址為 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

1. 在導覽窗格中，選擇 **Tables** (資料表)。

1. 將游標放在頁面頂端的搜尋欄位中。欄位具有依*屬性尋找資料表*的預留位置文字。

   屬性****功能表隨即出現，顯示要搜尋的各種資料表屬性。  
![\[屬性選單會從搜尋欄位中捨棄，並包含下列項目：名稱、分類、資料庫、位置、目錄 ID\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/search-for-tables.png)

1. 執行以下任意一項：
   + 依包含資料庫的 搜尋。

     1. 從**屬性**功能表中選擇**資料庫**，然後從出現的**資料庫**功能表中選擇資料庫，或輸入資料庫名稱，然後按 **Enter** 鍵。

        列出您在資料庫中擁有許可的資料表。

     1. （選用） 若要將清單縮小為資料庫中的單一資料表，請再次在搜尋欄位中放置游標，從**屬性**功能表中選擇**名稱**，然後從出現的**資料表**功能表中選擇資料表名稱，或輸入資料表名稱，然後按 **Enter** 鍵。

        系統會列出單一資料表，資料庫名稱和資料表名稱都會在搜尋欄位下顯示為圖磚。  
![\[搜尋欄位下方有兩個圖磚：一個標籤資料庫，其中包含選取的資料庫名稱，另一個標籤的資料表，包含選取的資料表名稱。圖磚右側有一個清除篩選條件按鈕。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/search-for-tables-with-filter.png)

        若要調整篩選條件，請關閉其中一個圖磚，或選擇**清除篩選條件**。
   + 依其他屬性搜尋。

     1. 從屬性功能表中選擇搜尋**屬性**。

        若要依 AWS 帳戶 ID 搜尋，請從**屬性**功能表中選擇**目錄 ID**，輸入有效的 AWS 帳戶 ID （例如 111122223333)，然後按 **Enter**。

        若要依位置搜尋，請從**屬性**功能表中選擇**位置**，然後從出現的位置功能表中選取**位置**。系統會傳回所選位置 （例如 Amazon S3) 根位置中的所有資料表。

**使用 搜尋資料表 AWS CLI**
+ 下列範例示範如何執行部分 serach。`--search-text` 參數可讓您搜尋在其中繼資料中包含指定文字的資料表。在這種情況下，它會傳回名稱、描述或其他中繼資料欄位中具有「客戶」的所有資料表。

  ```
  aws glue search-tables 
        --search-text "customer" 
        --region AWS 區域
        --max-results 10
        --sort-criteria "FieldName=Name,Sort=ASC"
  ```

# 跨 AWS 帳戶共用 Data Catalog 資料表和資料庫
<a name="sharing-catalog-resources"></a>

您可以透過將資源的 Lake Formation 許可授予外部 AWS 帳戶，與外部帳戶共用 Data Catalog 資源 （資料庫和資料表）。然後，使用者可以執行查詢和任務，以跨多個帳戶聯結和查詢資料表。在某些限制下，當您與其他帳戶共用 Data Catalog 資源時，該帳戶中的主體可以在該資源上操作，就像資源在其 Data Catalog 中一樣。

您不與外部 AWS 帳戶中的特定主體共用資源，而是與 AWS 帳戶或組織共用資源。當您與 AWS 組織共用資源時，您要與該組織所有層級的所有帳戶共用資源。然後，每個外部帳戶中的資料湖管理員必須將共用資源的許可授予其帳戶中的主體。

如需詳細資訊，請參閱[Lake Formation 中的跨帳戶資料共用](cross-account-permissions.md)及[授予 Data Catalog 資源的許可](granting-catalog-permissions.md)。

**另請參閱:**  
[存取和檢視共用的 Data Catalog 資料表和資料庫](viewing-shared-resources.md)
[先決條件](cross-account-prereqs.md)