本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從 Athena 註冊 S3 Tables 儲存貯體目錄和查詢資料表
Amazon S3 Tables 儲存貯體是 Amazon S3 中的儲存貯體類型,專門用於在 Apache Iceberg 資料表中存放表格式資料。資料表儲存貯體可自動化資料表管理任務,例如壓縮、快照管理和垃圾回收,進而持續最佳化查詢效能並將成本降至最低。無論您是剛開始,還是在 Iceberg 環境中已擁有數千個資料表,資料表儲存貯體都可以簡化任何規模的資料湖。如需詳細資訊,請參閱資料表儲存貯體。
考量與限制
-
S3 Tables 支援 Iceberg 資料表支援的所有 DDL 操作,除了以下例外:
-
不支援
ALTER TABLE RENAME、CREATE VIEW和ALTER DATABASE。 -
OPTIMIZE和VACUUM– 您可以在 S3 中管理壓縮和快照管理。如需詳細資訊,請參閱 S3 Tables 維護文件。
-
-
不支援對註冊為 Athena 資料來源的 S3 Tables 進行 DDL 查詢。
-
不支援查詢結果重複使用。
-
在已啟用 SSE-KMS、CSE-KMS 加密的工作群組中,您無法在 S3 Tables 上執行寫入操作,例如
INSERT、UPDATE、DELETE或MERGE。 -
在已啟用 S3 請求者支付選項的工作群組中,您無法在 S3 Tables 上執行 DML 操作。
從 Athena 查詢 S3 Tables
在 Athena 中查詢 S3 Tables 之前,請先完成以下先決條件步驟
建立 S3 資料表儲存貯體。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的建立資料表儲存貯體。
-
請依照《Amazon Simple Storage Service 使用者指南》中的整合的先決條件和將資料表儲存貯體與 AWS 分析服務整合,確保您的資料表儲存貯體已成功與 AWS Glue Data Catalog 和 AWS Lake Formation 整合。
注意
如果在步驟 1 中,您從 S3 主控台建立 S3 資料表儲存貯體時啟用了整合,則可以略過此步驟。
對於您用於藉助 Athena 執行查詢的主體,請透過 Lake Formation 主控台或 AWS CLI 授予 S3 Table 目錄的 Lake Formation 許可。
提交 S3 Tables 的查詢
使用上文授予的使用者/角色從 Athena 提交
CREATE DATABASE查詢。在此範例中,s3tablescatalog是從整合建立的父 Glue Data Catalog,s3tablescatalog/是為每個 S3 Tables 儲存貯體建立的子 Glue Data Catalog。您進行查詢的方式有兩種。amzn-s3-demo-bucket-
使用您在先前步驟中建立的資料庫,使用
CREATE TABLE建立資料表。下列範例會在您先前在s3tablescatalog/Glue 目錄中建立的amzn-s3-demo-bucket資料庫中建立資料表。test_namespace -
將資料插入您在上一個步驟中建立的資料表。
-
將資料插入資料表後,即可進行查詢。
在 Athena 中建立 S3 Tables
Athena 支援使用 CREATE DATABASE 陳述式在現有的 S3 Table 命名空間中或在 Athena 中建立的命名空間中建立資料表。若要從 Athena 建立 S3 資料表,則語法與建立一般 Iceberg 資料表時相同,只是您不需要指定 LOCATION,如下列範例所示。
CREATE TABLE [db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] ) [PARTITIONED BY (col_name | transform, ... )] [TBLPROPERTIES ([, property_name=property_value] )]
您也可以使用 CREATE TABLE AS SELECT (CTAS) 陳述式建立 S3 Tables。如需更多詳細資訊,請參閱 S3 Tables 的 CTAS。
將 S3 Tables 儲存貯體目錄註冊為 Athena 資料來源
要向 Athena 主控台註冊 S3 Tables 儲存貯體目錄,請遵循下列步驟。
-
前往 https://console.aws.amazon.com/athena/
開啟 Athena 主控台。 -
在導覽窗格中,選擇資料來源和目錄。
-
在資料來源和目錄頁面上,選擇建立資料來源。
-
對於選擇資料來源,選擇 Amazon S3 - AWS Glue Data Catalog。
-
在 AWS Glue Data Catalog 區段中,對於資料來源帳戶,選擇此帳戶中的 AWS Glue Data Catalog。
-
對於建立資料表或註冊目錄,選擇註冊新的 AWS Glue 目錄。
-
在資料來源詳細資訊區段中,對於資料來源名稱,輸入要用來在 SQL 查詢中指定資料來源的名稱,或使用產生的預設名稱。
-
對於目錄,選擇瀏覽,以搜尋相同帳戶中 AWS Glue 目錄的清單。如果沒有看到任何現有的目錄,請在 AWS Glue 主控台
中建立一個。 -
在瀏覽 AWS Glue 目錄對話方塊中,選取您要使用的目錄,然後選擇選擇。
-
(選用) 對於標籤,輸入您希望與資料來源關聯的鍵值對。
-
選擇下一步。
-
在檢閱和建立頁面上,驗證您輸入的資訊是否正確無誤,然後選擇建立資料來源。
S3 Tables 的 CTAS
Amazon Athena 現在支援對 S3 Tables 執行 CREATE TABLE AS SELECT (CTAS) 操作。這項功能可讓您根據 SELECT 查詢的結果建立新的 S3 Tables。
與標準 Athena 資料表相比,為 S3 資料表建立 CTAS 查詢時,有幾項重要差異:
-
您必須省略位置屬性,因為 S3 Tables 會自動管理自己的儲存位置。
-
table_type屬性預設為ICEBERG,因此您無需在查詢中明確進行指定。 -
如果您未指定格式,則系統會自動使用
PARQUET作為資料的預設格式。 -
所有其他屬性都遵循與一般 Iceberg 資料表相同的語法。
使用 CTAS 建立 S3 Tables 之前,請確保您已在 AWS Lake Formation 中設定必要的許可。具體而言,您需要許可才能在 S3 Tables 目錄中建立資料表。如果沒有這些許可,您的 CTAS 操作將會失敗。
注意
如果您的 CTAS 查詢失敗,您可能需要使用 S3 Tables API 刪除資料表,然後才能嘗試重新執行查詢。您無法使用 Athena DROP TABLE 陳述式來移除部分由查詢建立的資料表。
範例:
CREATE TABLE "s3tablescatalog/amzn-s3-demo-bucket"."namespace"."s3-table-name" WITH ( format = 'PARQUET' ) AS SELECT * FROMsource_table;