填入並管理交易資料表 - 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 資料表,在 AWS Glue Data Catalog 中使用 Apache Parquet 資料格式,並將資料存放在 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 中指定資料表格式和中繼資料檔案路徑,才能執行讀取和寫入。

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

注意

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 能夠向 Athena、Redshift Spectrum 和 Amazon EMR 等 AWS 分析服務提供憑證以存取資料。如需有關註冊 Amazon S3 位置的詳細資訊,請參閱將 Amazon S3 位置新增至您的資料湖

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

    • lakeformation:GetDataAccess

    • DATA_LOCATION_ACCESS

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

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

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

建立 Iceberg 資料表

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

若要建立 Iceberg 資料表

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

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

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

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

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

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

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

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