本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從 Athena 註冊 S3 資料表儲存貯體目錄和查詢資料表
Amazon S3 資料表儲存貯體是 Amazon S3 中的儲存貯體類型,專為在 Apache Iceberg 資料表中存放表格式資料而打造。資料表儲存貯體可自動化壓縮、快照管理和垃圾收集等資料表管理任務,以持續最佳化查詢效能並將成本降至最低。無論您是剛開始,還是在 Iceberg 環境中有數千個資料表,資料表儲存貯體都可以簡化任何規模的資料湖。如需詳細資訊,請參閱資料表儲存貯體。
考量與限制
-
S3 Tables 支援 Iceberg 資料表支援的所有 DDL 操作,但有下列例外:
-
ALTER TABLE RENAME
ALTER DATABASE
不支援CREATE VIEW
、 和 。 -
OPTIMIZE
和VACUUM
– 您可以在 S3 中管理壓縮和快照管理。如需詳細資訊,請參閱 S3 Tables 維護文件。
-
-
不支援對註冊為 Athena 資料來源的 S3 Tables 進行 DDL 查詢。
-
不支援重複使用查詢結果。
-
在已啟用 SSE-KMS、CSE-KMS 加密的工作群組中,您無法在 S3 Tables
MERGE
上執行寫入操作INSERT
,例如DELETE
、、UPDATE
或 。 -
在已啟用 S3 申請者付款選項的工作群組中,您無法在 S3 資料表上執行 DML 操作。
從 Athena 查詢 S3 資料表
在 Athena 中查詢 S3 資料表之前,請先完成這些先決條件步驟
建立 S3 資料表儲存貯體。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的建立資料表儲存貯體。
-
請確定您的資料表儲存貯體與 AWS Glue Data Catalog 和 整合 AWS Lake Formation 成功,方法是遵循 Amazon Simple Storage Service 使用者指南中的整合和將資料表儲存貯體與 AWS 分析服務整合的先決條件。
注意
如果您在步驟 1 中從 S3 主控台建立 S3 資料表儲存貯體時啟用整合,則可以略過此步驟。
對於您使用 Athena 執行查詢的委託人,請透過 Lake Formation 主控台或 授予 S3 Table 目錄的 Lake Formation 許可 AWS CLI。
提交 S3 資料表的查詢
使用上述授予的使用者/角色從 Athena 提交
CREATE DATABASE
查詢。在此範例中,s3tablescatalog
是從整合建立的父 Glue Data Catalogs3tablescatalog/
,也是為每個 S3 資料表儲存貯體建立的子 Glue Data Catalog。有兩種方式可以查詢。amzn-s3-demo-bucket
-
使用您在上一個步驟中建立的資料庫,使用 來
CREATE TABLE
建立資料表。下列範例會在您先前在 Glues3tablescatalog/
目錄中建立的amzn-s3-demo-bucket
資料庫中建立資料表。test_namespace
-
將資料插入您在上一個步驟中建立的資料表。
-
將資料插入資料表後,您可以進行查詢。
在 Athena 中建立 S3 資料表
Athena 支援在現有的 S3 Table 命名空間中建立資料表,或在 Athena 中使用 CREATE DATABASE
陳述式建立的命名空間中建立資料表。若要從 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 資料表。如需詳細資訊,請參閱S3 資料表的 CTAS。
將 S3 資料表儲存貯體目錄註冊為 Athena 資料來源
若要向 Athena 主控台註冊 S3 資料表儲存貯體目錄,請執行下列步驟。
-
前往 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 資料表的 CTAS
Amazon Athena 現在支援 S3 Tables 的 CREATE TABLE AS SELECT (CTAS) 操作。此功能可讓您根據 SELECT 查詢的結果建立新的 S3 資料表。
為 S3 資料表建立 CTAS 查詢時,與標準 Athena 資料表相比,有一些重要的差異:
-
您必須省略位置屬性,因為 S3 Tables 會自動管理自己的儲存位置。
-
table_type
屬性預設為ICEBERG
,因此您不需要在查詢中明確指定它。 -
如果您未指定格式,系統會自動使用
PARQUET
做為資料的預設格式。 -
所有其他屬性都遵循與一般 Iceberg 資料表相同的語法。
使用 CTAS 建立 S3 資料表之前,請確定您已在其中設定必要的許可 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
;