View a markdown version of this page

建立 Apache Iceberg 資料表 - AWS Lake Formation

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

建立 Apache Iceberg 資料表

AWS Lake Formation 支援建立 Apache Iceberg 資料表,這些資料表使用 中的 Apache Parquet 資料格式 AWS Glue Data Catalog 與 Amazon S3 中的資料。Data Catalog 中的資料表是中繼資料定義,表示資料存放區中的資料。根據預設,Lake Formation 會建立 Iceberg v2 資料表。有關 v1 和 v2 資料表之間的區別,請參閱 Apache Iceberg 文件中的格式版本變更

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

您可以使用 Lake Formation 主控台或 AWS Glue API 中的 CreateTable操作,在 Data Catalog 中建立 Iceberg 資料表。如需詳細資訊,請參閱 CreateTable 動作 (Python: create_table)

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

當您向 Amazon S3 資料位置註冊時,您可以使用 Lake Formation 使用精細存取控制許可來保護 Iceberg 資料表 AWS Lake Formation。對於 Amazon S3 中的來源資料和未向 Lake Formation 註冊的中繼資料,存取權取決於 Amazon S3 和 AWS Glue 動作的 IAM 許可政策。如需詳細資訊,請參閱管理 Lake Formation 許可

注意

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

先決條件

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

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

    除了在 Data Catalog 中建立資料表所需的許可之外,資料表建立者還需要下列許可:

    • s3:PutObject on resource arn:aws:s3:::{bucketName}

    • s3:GetObject on resource arn:aws:s3:::{bucketName}

    • s3:DeleteObjecton resource arn:aws:s3:::{bucketName}

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

    若要使用 Lake Formation 來管理和保護資料湖中的資料,請使用 Lake Formation 註冊具有資料表資料的 Amazon S3 位置。這可讓 Lake Formation 將登入資料提供給 AWS 分析服務,例如 Athena、Redshift Spectrum 和 Amazon EMR 來存取資料。如需註冊 Amazon S3 位置的詳細資訊,請參閱 將 Amazon S3 位置新增至您的資料湖

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

    • lakeformation:GetDataAccess

    • DATA_LOCATION_ACCESS

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

      如需資料位置許可的詳細資訊,請參閱 基礎資料存取控制

若要啟用壓縮,服務需要擔任有權在 Data Catalog 中更新資料表的 IAM 角色。如需詳細資訊,請參閱資料表最佳化先決條件

建立 Iceberg 資料表

您可以使用 Lake Formation 主控台或此頁面所記載 AWS Command Line Interface 的方式建立 Iceberg v1 和 v2 資料表。您也可以使用 AWS Glue 主控台或 建立 Iceberg 資料表 AWS Glue 編目程式。如需詳細資訊,請參閱《 AWS Glue 開發人員指南》中的 Data Catalog 和編目程式

若要建立 Iceberg 資料表

Console
  1. 登入 AWS 管理主控台,並在 https://https://console.aws.amazon.com/lakeformation/ 開啟 Lake Formation 主控台。

  2. 在 Data Catalog 下,選擇資料表,然後使用建立資料表按鈕來指定下列屬性:

    • 資料表名稱:輸入資料表的名稱。如果使用 Athena 來存取資料表,請使用《Amazon Athena 使用者指南》中的這些命名秘訣

    • 資料庫:選擇現有的資料庫或建立新的資料庫。

    • 描述:資料表的描述。您可以撰寫說明,來協助您了解資料表的內容。

    • 資料表格式:針對資料表格式,選擇 Apache Iceberg。

      使用資料表最佳化選項選取 Apache Iceberg 資料表選項。
    • 資料表最佳化

      • 壓縮 – 合併和重寫資料檔案,移除過時的資料,並將分段資料合併為更大、更有效的檔案。

      • 快照保留 – 快照是 Iceberg 資料表的時間戳記版本。快照保留組態可讓客戶強制執行保留快照的時間長度,以及要保留的快照數量。設定快照保留最佳化工具可透過移除較舊、不必要的快照及其相關聯的基礎檔案,協助管理儲存體負荷。

      • 孤立檔案刪除 – 孤立檔案是 Iceberg 資料表中繼資料不再參考的檔案。這些檔案可能會隨著時間累積,特別是在資料表刪除或 ETL 任務失敗等操作之後。啟用孤立檔案刪除 AWS Glue 可讓 定期識別和移除這些不必要的檔案,釋放儲存空間。

      如需詳細資訊,請參閱最佳化 Iceberg 資料表

    • IAM 角色:若要執行壓縮,服務會代表您擔任 IAM 角色。您可以使用下拉式選單選擇 IAM 角色。請確認角色具有啟用壓縮的必要權限。

      若要進一步了解所需的許可,請參閱資料表最佳化先決條件

    • 位置:指定 Amazon S3 中存放中繼資料表之資料夾的路徑。Iceberg 需要 Data Catalog 中的中繼資料檔案和位置,才能執行讀取和寫入。

    • 結構描述:選擇新增資料欄以新增資料欄和資料欄的資料類型。可以選擇建立空白資料表,稍後再更新結構描述。Data Catalog 支援 Hive 資料類型。如需詳細資訊,請參閱 Hive 資料類型

      Iceberg 可讓您在建立資料表之後改進結構描述和分區。可以使用 Athena 查詢來更新資料表結構描述,使用 Spark 查詢來更新分區。

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/" } }'