填入和管理交易資料表 - AWS Glue

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

填入和管理交易資料表

Apache IcebergApache Hudi 和 Linux Foundation Delta Lake 是開放原始碼資料表格式,專為處理 Apache Spark 中的大規模資料分析和資料湖工作負載而設計。

您可以使用 AWS Glue Data Catalog 下列方法在 中填入 Iceberg、Hudi 和 Delta Lake 資料表:

  • AWS Glue 編目程式; – AWS Glue 編目程式可以在 Data Catalog 中自動探索和填入 Iceberg、Hudi 和 Delta Lake 資料表中繼資料。如需詳細資訊,請參閱使用爬蟲程式填入 Data Catalog

  • AWS Glue ETL 任務 – 您可以建立 ETL 任務,將資料寫入 Iceberg、Hudi 和 Delta Lake 資料表,並在 Data Catalog 中填入其中繼資料。如需詳細資訊,請參閱搭配 AWS Glue ETL 任務使用資料湖架構

  • AWS Glue 主控台、 AWS Lake Formation 主控台 AWS CLI 或 API – 您可以使用 AWS Glue 主控台、Lake Formation 主控台或 API,在 Data Catalog 中建立和管理 Iceberg 資料表定義。

建立 Apache Iceberg 資料表

您可以建立 Apache Iceberg 資料表,該資料表使用 中的 Apache Parquet 資料格式 AWS Glue Data Catalog ,並將資料存放在 Amazon S3 中。Data Catalog 中的資料表是中繼資料定義,代表資料存放區中的資料。根據預設, AWS Glue 會建立 Iceberg v2 資料表。有關 v1 和 v2 資料表之間的區別,請參閱 Apache Iceberg 文件中的格式版本變更

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

您可以使用 AWS Glue 或 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 許可政策。如需詳細資訊,請參閱管理許可

注意

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

先決條件

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

  1. 建立 Iceberg 資料表所需的許可,而沒有向 Lake Formation 註冊的資料。

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

    • s3:PutObject 資源 arn:aws:s3:::{bucketName}

    • s3:GetObject 資源 arn:aws:s3::{bucketName}

    • s3:DeleteObject資源 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

      在位置上具有資料位置許可的委託人在所有子位置上也具有位置許可。

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

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

建立 Iceberg 資料表

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

建立 Iceberg 資料表

Console
  1. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/glue/ 開啟 AWS Glue 主控台。

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

    • 資料表名稱 – 輸入資料表的名稱。如果您使用 Athena 存取資料表,請使用 Amazon Athena 使用者指南中的這些命名提示

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

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

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

    • 啟用壓縮 – 選擇啟用壓縮,將資料表中的小型 Amazon S3 物件壓縮為較大的物件。

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

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

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

    • 結構描述 – 選擇新增資料欄以新增資料欄和資料欄的資料類型。您可以選擇建立空白資料表,稍後再更新結構描述。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/" } }'
主題