本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Athena Google Cloud Storage 連接器可讓 Amazon Athena 對 Parquet 和存放在 Google Cloud Storage (GCS) 儲存貯體中的CSV檔案執行查詢。將一或多個 Parquet 或CSV檔案分組到GCS儲存貯體中的未分割或分割資料夾中後,您可以在AWS Glue
此連接器無法向 Glue Data Catalog 註冊為聯合型錄。此連接器不支援 Lake Formation 中在目錄、資料庫、資料表、資料欄、資料列和標籤層級定義的資料存取控制。此連接器使用 Glue Connections 來集中 Glue 中的組態屬性。
如果您的 帳戶中已啟用 Lake Formation,則您在 中部署的 Athena 聯合 Lambda 連接器IAM角色 AWS Serverless Application Repository 必須在 Lake Formation 中具有對 的讀取存取權 AWS Glue Data Catalog。
如需示範如何使用 Athena 對 Parquet 或GCS儲存貯體中的CSV檔案執行查詢的文章,請參閱 AWS 大數據部落格文章使用 Amazon Athena 查詢存放在 Google Cloud Platform 中的資料
必要條件
-
設定與 Google Cloud Storage 中的儲存貯體和資料夾對應的 AWS Glue 資料庫和資料表。如需這些步驟,請參閱本文件後面的 在 中設定資料庫和資料表 AWS Glue。
使用 Athena 主控台或 AWS Serverless Application Repository,將連接器部署到您的 AWS 帳戶 。如需詳細資訊,請參閱 建立資料來源連線 或 使用 AWS Serverless Application Repository 部署資料來源連接器。
限制
-
不支援寫入DDL操作。
-
任何相關的 Lambda 限制。如需詳細資訊,請參閱《AWS Lambda 開發人員指南》中的 Lambda 配額。
-
目前,連接器僅支援分割區資料欄的
VARCHAR
類型 (string
或 AWS Glue 資料表結構描述varchar
中的 )。當您在 Athena 中查詢其他分割區欄位類型時,會引發錯誤。
條款
下列術語與GCS連接器相關。
-
處理常式 – 存取儲存GCS貯體的 Lambda 處理常式。處理常式可以用於中繼資料或資料記錄。
-
中繼資料處理常式 – 從GCS儲存貯體擷取中繼資料的 Lambda 處理常式。
-
記錄處理常式 – 從儲存GCS貯體擷取資料記錄的 Lambda 處理常式。
-
複合處理常式 – Lambda 處理常式,可從儲存GCS貯體擷取中繼資料和資料記錄。
支援的檔案類型
GCS 連接器支援 Parquet 和CSV檔案類型。
注意
請確定您不會同時將 CSV和 Parquet 檔案放在相同的GCS儲存貯體或路徑中。當 Parquet 檔案嘗試讀取為 CSV時,這樣做可能會導致執行時間錯誤,反之亦然。
參數
使用本節中的參數來設定GCS連接器。
注意
Athena 資料來源連接器於 2024 年 12 月 3 日及之後建立,使用 AWS Glue 連線。
下列參數名稱和定義適用於 2024 年 12 月 3 日之前建立的 Athena 資料來源連接器。這些可能與其對應的AWS Glue 連線屬性不同。從 2024 年 12 月 3 日開始,只有在您手動部署舊版 Athena 資料來源連接器時,才能使用下列參數。
-
spill_bucket - 針對超過 Lambda 函數限制的資料,指定 Amazon S3 儲存貯體。
-
spill_prefix - (選用) 預設為指定的
spill_bucket
中名為athena-federation-spill
的子資料夾。我們建議您在此位置設定 Amazon S3 儲存生命週期,以刪除超過預定天數或小時數的溢出。 -
spill_put_request_headers – (選用) JSON 用於溢出之 Amazon S3
putObject
請求的請求標頭和值編碼映射 (例如{"x-amz-server-side-encryption" : "AES256"}
)。如需其他可能的標頭,請參閱《Amazon Simple Storage Service API參考PutObject》中的 。 -
kms_key_id – (選用) 預設情況下,任何溢灑至 Amazon S3 的資料都會使用 AES-GCM 驗證的加密模式和隨機產生的金鑰進行加密。若要讓您的 Lambda 函數使用KMS類似 產生的更強加密金鑰
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331
,您可以指定KMS金鑰 ID。 -
disable_spill_encryption - (選用) 當設定為
True
時,停用溢出加密。預設為 ,False
以便使用 AES- GCM來加密溢出到 S3 的資料,無論是使用隨機產生的金鑰,還是KMS產生金鑰。停用溢出加密可以提高效能,尤其是如果溢出位置使用伺服器端加密。 -
secret_manager_gcp_creds_name – 中 AWS Secrets Manager 包含您GCS登入資料JSON格式的秘密名稱 (例如
GoogleCloudPlatformCredentials
)。
在 中設定資料庫和資料表 AWS Glue
由於GCS連接器的內建結構描述推論功能有限,建議您將 AWS Glue 用於中繼資料。下列程序說明如何在 中建立資料庫和資料表 AWS Glue ,以便從 Athena 存取。
在 AWS Glue建立資料庫
您可以使用 AWS Glue 主控台來建立資料庫,以搭配GCS連接器使用。
在 中建立資料庫 AWS Glue
登入 AWS Management Console 並在 開啟 AWS Glue 主控台https://console.aws.amazon.com/glue/
。 -
在導覽窗格中,選擇 Databases (資料庫)。
-
選擇新增資料庫。
-
針對名稱,輸入您要與GCS連接器搭配使用的資料庫名稱。
-
針對位置,指定
google-cloud-storage-flag
。此位置告知GCS連接器, AWS Glue 資料庫包含要在 Athena 中查詢GCS資料的資料表。連接器可辨識 Athena 中具有此標記的資料庫,並忽略沒有此標記的資料庫。 -
選擇建立資料庫。
在 AWS Glue中建立資料表
現在,您可以為資料庫建立資料表。當您建立要與GCS連接器搭配使用的 AWS Glue 資料表時,您必須指定其他中繼資料。
在 AWS Glue 主控台中建立資料表
-
在 AWS Glue 主控台的導覽窗格中,選擇資料表。
-
在 Tables (資料表) 頁面中,選擇 Add table (新增資料表)。
-
在 Set table properties (設定資料表屬性) 頁面中,輸入以下資訊。
-
名稱 – 資料表的唯一名稱。
-
資料庫 – 選擇 AWS Glue 您為GCS連接器建立的資料庫。
-
包含路徑 – 在資料存放區區段中,針對包含路徑,輸入 字GCS首為 URI的位置
gs://
(例如,gs://
)。如果您有一個或多個分割區資料夾,則請不要將其包含在路徑中。gcs_table
/data
/注意
當您輸入非
s3://
資料表路徑時, AWS Glue 主控台會顯示錯誤。您可以忽略此錯誤。將成功建立資料表。 -
資料格式 – 針對分類,選取 CSV或 Parquet。
-
-
選擇 Next (下一步)。
-
強烈建議您在 Choose or define schema (選擇或定義結構描述) 頁面中定義資料表結構描述,但不是必要的。如果您未定義結構描述,GCS連接器會嘗試為您推斷結構描述。
執行以下任意一項:
-
如果您希望GCS連接器嘗試為您推斷結構描述,請選擇下一步,然後選擇建立。
-
若要自行定義結構描述,請遵循下一節中的步驟。
-
在 中定義資料表結構描述 AWS Glue
在 中定義資料表結構描述 AWS Glue 需要更多步驟,但可讓您更好地控制資料表建立程序。
在 中定義資料表的結構描述 AWS Glue
-
在 Choose or define schema (選擇或定義結構描述) 頁面中,選擇 Add (新增)。
-
使用 Add schema entry (新增結構描述項目) 對話方塊提供資料欄名稱和資料類型。
-
若要將資料欄指定為分割區資料欄,請選取 Set as partition key (設定為分割區索引鍵) 選項。
-
選擇 Save (儲存) 可儲存資料欄。
-
選擇 Add (新增) 可新增另一個資料欄。
-
當您完成新增資料欄時,選擇 Next (下一步)。
-
在 Review and create (檢閱和建立) 頁面中,檢閱資料表,然後選擇 Create (建立)。
-
如果您的結構描述包含分割區資訊,則請遵循下一節中的步驟,將分割區模式新增至 AWS Glue中的資料表屬性。
將分割區模式新增至 中的資料表屬性 AWS Glue
如果您的儲存GCS貯體有分割區,您必須將分割區模式新增至 資料表的屬性 AWS Glue。
將分割區資訊新增至資料表屬性 AWS Glue
-
在您建立之資料表的詳細資訊頁面上 AWS Glue,選擇動作、編輯資料表。
-
在 Edit table (編輯資料表) 頁面中,向下捲動至 Table properties (資料表屬性) 區段。
-
選擇 Add (新增) 以新增分割區索引鍵。
-
在 Key (索引鍵) 欄位,輸入
partition.pattern
。此索引鍵定義資料夾路徑模式。 -
在 Value (值) 中,輸入資料夾路徑樣式,例如
StateName=${statename}/ZipCode=${zipcode}/
,其中由${}
括起來的statename
和zipcode
是分割區資料欄名稱。GCS 連接器支援 Hive 和非 Hive 分割區方案。 -
完成時,請選擇 Save (儲存)。
-
若要檢視您剛剛建立的資料表屬性,請選擇 Advanced properties (進階屬性) 索引標籤。
此時,您可以導覽至 Athena 主控台。您在 中建立的資料庫和資料表 AWS Glue 可在 Athena 中查詢。
支援的資料類型
下表顯示 Parquet CSV和 支援的資料類型。
CSV
Nature of data (資料性質) | Inferred Data Type (推斷的資料類型) |
---|---|
資料看起來像數字 | BIGINT |
資料看起來像字串 | VARCHAR |
資料看起來像浮點值 (浮點數、雙精度或十進制) | DOUBLE |
資料看起來像日期 | 時間戳記 |
包含真/假值的資料 | BOOL |
Parquet
PARQUET | Athena (Arrow) (Athena (箭頭)) |
---|---|
BINARY | VARCHAR |
BOOLEAN | BOOL |
DOUBLE | DOUBLE |
ENUM | VARCHAR |
FIXED_LEN_BYTE_ARRAY | DECIMAL |
FLOAT | FLOAT (32 位元) |
INT32 |
|
INT64 |
|
INT96 | 時間戳記 |
MAP | MAP |
STRUCT | STRUCT |
LIST | LIST |
所需的許可
如需此連接器所需IAM政策的完整詳細資訊,請參閱 athena-gcs.yamlPolicies
區段。以下清單摘要說明所需的許可。
-
Amazon S3 寫入存取 - 連接器需要 Amazon S3 中某個位置的寫入存取權,以便從大型查詢中溢寫結果。
-
Athena GetQueryExecution – 連接器會在上游 Athena 查詢終止時使用此許可來快速失敗。
-
AWS Glue Data Catalog – GCS 連接器需要對 的唯讀存取權 AWS Glue Data Catalog ,才能取得結構描述資訊。
-
CloudWatch 日誌 – 連接器需要存取 CloudWatch 日誌來存放日誌。
效能
當資料表結構描述包含分割區欄位且 partition.pattern
資料表屬性設定正確時,您可以在查詢的 WHERE
子句中包含分割區欄位。對於這類查詢,GCS連接器會使用分割區資料欄來精簡GCS資料夾路徑,並避免掃描GCS資料夾中不需要的檔案。
對於 Parquet 資料集,選取資料欄子集會導致掃描的資料較少。當套用資料欄投影時,這通常會導致較短的查詢執行階段。
對於CSV資料集,不支援資料欄投影,也不會減少掃描的資料量。
LIMIT
子句可減少掃描的資料量,但是如果您未提供述詞,則應期望具有 LIMIT
子句的 SELECT
查詢掃描至少 16 MB 的資料。GCS 連接器會掃描較大的資料集資料,而不是較小的資料集,無論套用的LIMIT
子句為何。例如,與較小的基礎資料集相比,SELECT * LIMIT 10000
查詢可為較大的基礎資料集掃描更多資料。
授權資訊
使用此連接器,即表示您確認包含第三方元件,該元件的清單可在此連接器的 pom.xml
其他資源
如需此連接器的詳細資訊,請造訪對應的網站