Amazon Athena Google Cloud Storage 連接器 - Amazon Athena

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

Amazon Athena Google Cloud Storage 連接器

Amazon Athena Google Cloud Storage 連接器讓 Amazon Athena 能夠對存放在 Google Cloud Storage (GCS) 儲存貯體中的 Parquet 檔案和 CSV 檔案執行查詢。將一個或多個 Parquet 或 CSV 檔案分組到 GCS 儲存貯體中的未分割或分割資料夾之後,您可以在 AWS Glue 資料庫資料表中對其進行整理。

如果您的帳戶中啟用了 Lake Formation,則您部署在其中部署的 Athena 聯合 Lambda 連接器的 IAM 角色 AWS Serverless Application Repository 必須具有. AWS Glue Data Catalog

如需瞭解如何使用 Athena 對 GCS 儲存貯體中的實木複合地板或 CSV 檔案執行查詢的文章,請參閱 AWS 大數據部落格文章使用 Amazon Athena 查詢儲存在 Google 雲端平台中的資料

必要條件

限制

  • 不支援寫入 DDL 操作。

  • 任何相關的 Lambda 限制。如需詳細資訊,請參閱《AWS Lambda 開發人員指南》中的 Lambda 配額

  • 目前,連接器僅支援磁碟分割資料行 (stringvarchar資料 AWS Glue 表結構描述) 的VARCHAR類型。當您在 Athena 中查詢其他分割區欄位類型時,會引發錯誤。

條款

下列術語與 GCS 連接器相關。

  • 處理常式 - 存取 GCS 儲存貯體的 Lambda 處理常式。處理常式可以用於中繼資料或資料記錄。

  • 中繼資料處理常式 - 從 GCS 儲存貯體中擷取中繼資料的 Lambda 處理常式。

  • 記錄處理常式 - 從 GCS 儲存貯體中擷取資料記錄的 Lambda 處理常式。

  • 複合處理常式 - 從 GCS 儲存貯體中擷取中繼資料和資料記錄的 Lambda 處理常式。

支援的檔案類型

GCS 連接器支援 Parquet 和 CSV 檔案類型。

注意

請確定不要將 CSV 和 Parquet 檔案同時放在相同的 GCS 儲存貯體或路徑中。如果嘗試將 Parquet 檔案讀取為 CSV,可能會導致執行階段錯誤,反之亦然。

參數

使用本節中的 Lambda 環境變數來設定 GCS 連接器。

  • spill_bucket - 針對超過 Lambda 函數限制的資料,指定 Amazon S3 儲存貯體。

  • spill_prefix - (選用) 預設為指定的 spill_bucket 中名為 athena-federation-spill 的子資料夾。我們建議您在此位置設定 Amazon S3 儲存生命週期,以刪除超過預定天數或小時數的溢出。

  • spill_put_request_headers – (選用) 用於溢出的 Amazon S3 putObject 請求的請求標頭和值的 JSON 編碼映射 (例如,{"x-amz-server-side-encryption" : "AES256"})。如需其他可能的標頭,請參閱 Amazon 簡單儲存服務 API 參考PutObject中的。

  • kms_key_id - (選用) 依預設,任何溢出到 Amazon S3 的資料都會使用 AES-GCM 驗證加密模式和隨機產生的金鑰進行加密。為了讓您的 Lambda 函數使用 KMS 產生的更強大的加密金鑰,例如 a7e63k4b-8loc-40db-a2a1-4d0en2cd8331,您可以指定 KMS 金鑰 ID。

  • disable_spill_encryption - (選用) 當設定為 True 時,停用溢出加密。預設為 False,因此溢出 S3 的資料會使用 AES-GCM 進行加密 — 使用隨機產生的金鑰或 KMS 來產生金鑰。停用溢出加密可以提高效能,尤其是如果溢出位置使用伺服器端加密

  • 秘密名稱 — 密碼的名稱,其中包含您的 JSON 格式的 GCS AWS Secrets Manager 認證 (例如)。GoogleCloudPlatformCredentials

設置數據庫和表 AWS Glue

由於 GCS 連接器的內建結構描述推論功能受到限制,因此建議您將中繼資料用 AWS Glue 於中繼資料。下列程序顯示如何建立可從 Athena 存取的 AWS Glue 資料庫和表格。

在 AWS Glue建立資料庫

您可以使用主 AWS Glue 控台建立與 GCS 連接器搭配使用的資料庫。

若要在中建立資料庫 AWS Glue
  1. 請登入 AWS Management Console 並開啟 AWS Glue 主控台,網址為 https://console.aws.amazon.com/glue/

  2. 在導覽窗格中,選擇 Databases (資料庫)。

  3. 選擇新增資料庫

  4. 對於 Name (名稱),輸入您要搭配 GCS 連接器使用的資料庫名稱。

  5. 對於「位置」,請指定s3://google-cloud-storage-flag.此位置告知 GCS 連接器資料 AWS Glue 庫包含要在 Athena 中查詢之 GCS 資料的表格。連接器可辨識 Athena 中具有此標記的資料庫,並忽略沒有此標記的資料庫。

  6. 選擇建立資料庫

在 AWS Glue中建立資料表

現在,您可以為資料庫建立資料表。當您建立要與 GCS 連接器搭配使用的資料 AWS Glue 表時,必須指定其他中繼資料。

若要在 AWS Glue 主控台中建立資料表
  1. 在 AWS Glue 主控台中,從導覽窗格中選擇 [格]。

  2. Tables (資料表) 頁面中,選擇 Add table (新增資料表)。

  3. Set table properties (設定資料表屬性) 頁面中,輸入以下資訊。

    • 名稱 – 資料表的唯一名稱。

    • 資料庫 - 選擇您為 GCS 連接器建立的 AWS Glue 資料庫。

    • 包含路徑 – 在 Data store (資料存放區) 區段中,對於 Include path (包含路徑),輸入字首為 gs:// 的 GCS URI 位置 (例如,gs://gcs_table/data/)。如果您有一個或多個分割區資料夾,則請不要將其包含在路徑中。

      注意

      當您輸入非 s3:// 資料表路徑時, AWS Glue 主控台會顯示錯誤。您可以忽略此錯誤。將成功建立資料表。

    • 資料格式 - 對於 Classification (分類),請選取 CSVParquet

  4. 選擇下一步

  5. 強烈建議您在 Choose or define schema (選擇或定義結構描述) 頁面中定義資料表結構描述,但不是必要的。如果您未定義結構描述,則 GCS 連接器會嘗試為您推斷結構描述。

    執行以下任意一項:

    • 如果要讓 GCS 連接器嘗試為您推斷結構描述,則請選擇 Next (下一步),然後選擇 Create (建立)。

    • 若要自行定義結構描述,請遵循下一節中的步驟。

定義資料表結構定義於 AWS Glue

在中定義資料表結構定義 AWS Glue 需要更多步驟,但可讓您更好地控制資料表建立程序。

若要在中定義資料表的結構定義 AWS Glue
  1. Choose or define schema (選擇或定義結構描述) 頁面中,選擇 Add (新增)。

  2. 使用 Add schema entry (新增結構描述項目) 對話方塊提供資料欄名稱和資料類型。

  3. 若要將資料欄指定為分割區資料欄,請選取 Set as partition key (設定為分割區索引鍵) 選項。

  4. 選擇 Save (儲存) 可儲存資料欄。

  5. 選擇 Add (新增) 可新增另一個資料欄。

  6. 當您完成新增資料欄時,選擇 Next (下一步)。

  7. Review and create (檢閱和建立) 頁面中,檢閱資料表,然後選擇 Create (建立)。

  8. 如果您的結構描述包含分割區資訊,則請遵循下一節中的步驟,將分割區模式新增至 AWS Glue中的資料表屬性。

將分區模式添加到表屬性 AWS Glue

如果您的 GCS 儲存貯體具有分割區,則必須將分割區模式新增至 AWS Glue中的資料表屬性。

若要將分割區資訊新增至表格屬性 AWS Glue
  1. 在您在中建立之表格的詳細資訊頁面上 AWS Glue,選擇動作編輯表格

  2. Edit table (編輯資料表) 頁面中,向下捲動至 Table properties (資料表屬性) 區段。

  3. 選擇 Add (新增) 以新增分割區索引鍵。

  4. Key (索引鍵) 欄位,輸入 partition.pattern。此索引鍵定義資料夾路徑模式。

  5. Value (值) 中,輸入資料夾路徑樣式,例如 StateName=${statename}/ZipCode=${zipcode}/,其中由 ${} 括起來的 statenamezipcode 是分割區資料欄名稱。GCS 連接器支援 Hive 和非 Hive 分割區結構描述。

  6. 完成時,請選擇 Save (儲存)

  7. 若要檢視您剛剛建立的資料表屬性,請選擇 Advanced properties (進階屬性) 索引標籤。

此時,您可以導覽至 Athena 主控台。您在其中建立的資料庫和資料表可供 AWS Glue 在 Athena 查詢。

支援的資料類型

下表顯示 CSV 和 Parquet 支援的資料類型。

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
  1. INT32

  2. DATEDAY (當 Parquet 資料欄邏輯類型為 DATE 時)

INT64
  1. INT64

  2. TIMESTAMP (當 Parquet 資料欄邏輯類型為 TIMESTAMP 時)

INT96 時間戳記
MAP MAP
STRUCT STRUCT
LIST LIST

所需的許可

如需詳細了解此連接器所需的 IAM 政策,請檢閱 athena-gcs.yaml 檔案的 Policies 部分。以下清單摘要說明所需的許可。

  • 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 檔案中找到,並同意 GitHub .com 上 LICENSE.txt 檔案中提供的個別協力廠商授權中的條款。

其他資源

如需有關此連接器的其他資訊,請造訪 GitHub .com 上的對應網站