使用外部 Hive 中繼存放區 - Amazon Athena

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

使用外部 Hive 中繼存放區

您可以使用適用於外部 Hive 中繼存放區的 Amazon Athena 資料連接器,來查詢在 Simple Storage Service (Amazon S3) 中使用 Apache Hive 中繼存放區的資料集。 AWS Glue Data Catalog 不需要將中繼資料遷移至 。在 Athena 管理主控台中,您可以設定 Lambda 函數與私有的 Hive 中繼存放區通訊,VPC然後將其連接至中繼存放區。從 Lambda 到 Hive 中繼存放區的連線由私有 Amazon VPC頻道保護,不會使用公有網際網路。您可以提供自己的 Lambda 函數程式碼,也可以使用適用於外部 Hive 中繼存放區的 Athena 資料連接器預設實作。

功能概觀

您可以使用適用於外部 Hive 中繼存放區的 Athena 資料連接器執行下列任務:

  • 使用 Athena 主控台註冊自訂目錄並使用它們執行查詢。

  • 為不同的外部 Hive 中繼存放區定義 Lambda 函數,並在 Athena 查詢中加以聯結。

  • 在相同的 Athena 查詢中使用 AWS Glue Data Catalog 和外部 Hive 中繼存放區。

  • 在查詢執行內容中將目錄指定為目前預設目錄。如此就無需在查詢中將目錄名稱做為資料庫名稱的前綴。您可以使用 database.table,而不是用語法 catalog.database.table

  • 使用各種工具來執行參考外部 Hive 中繼存放區的查詢。您可以使用 Athena 主控台、 AWS CLI、 AWS SDK、Athena APIs和更新的 Athena JDBC和ODBC驅動程式。更新的驅動程式具有自訂目錄的支援。

API 支援

Athena Data Connector for External Hive Metastore 包含目錄註冊API操作和中繼資料API操作的支援。

  • 目錄註冊 – 註冊適用於外部 Hive 中繼存放區和聯合資料來源的自訂目錄。

  • 中繼資料 – 使用中繼資料APIs來提供 和您向 Athena 註冊之任何目錄的資料庫 AWS Glue 和資料表資訊。

  • Athena JAVASDK用戶端 – 在更新的 Athena Java SDK用戶端中的 StartQueryExecution操作中使用目錄註冊 APIs、APIs中繼資料 和 對目錄的支援。

參考實作

Athena 提供 Lambda 函數的參考實作,該函數會連接到外部 Hive 中繼存放區。參考實作是在 Athena Hive 中繼存放區作為 GitHub 開放原始碼專案提供。

參考實作可在 AWS Serverless Application Repository () 中做為下列兩個 AWS SAM 應用程式使用SAR。您可以在 中使用其中一個應用程式SAR來建立自己的 Lambda 函數。

  • AthenaHiveMetastoreFunction – Uber Lambda 功能 .jar 檔案。"uber" JAR(也稱為脂肪JAR或JAR具有相依性) 是檔案,在單一.jar檔案中同時包含 Java 程式及其相依性。

  • AthenaHiveMetastoreFunctionWithLayer – Lambda 層和薄型 Lambda 函數 .jar 檔案。

工作流程

下列圖表說明 Athena 如何與您的外部 Hive 中繼存放區互動。

Athena 如何與您的外部 Hive 中繼存放區互動。

在此工作流程中,與資料庫連接的 Hive 中繼存放區位於您的 中VPC。您可以使用 Hive Server2 來使用 Hive 管理 Hive 中繼存放區CLI。

從 Athena 使用外部 Hive 中繼存放區的工作流程包含下列步驟。

  1. 您可以建立 Lambda 函數,將 Athena 連接到位於 內的 Hive 中繼存放區VPC。

  2. 您可以為 Hive 中繼存放區註冊唯一的目錄名稱,並在您的帳戶中註冊相對應的函數名稱。

  3. 當您執行 Athena DML或使用目錄名稱的DDL查詢時,Athena 查詢引擎會呼叫您與該目錄名稱相關聯的 Lambda 函數名稱。

  4. 使用 時 AWS PrivateLink,Lambda 函數會與 中的外部 Hive 中繼存放區通訊,VPC並接收對中繼資料請求的回應。Athena 會使用來自外部 Hive 中繼存放區的中繼資料,就像它使用預設 AWS Glue Data Catalog的中繼資料一樣。

考量與限制

當您使用適用於外部 Hive 中繼存放區的 Athena 資料連接器時,請考慮下列幾點:

  • 您可以使用 在外部 Hive 中繼存放區上CTAS建立資料表。

  • 您可以使用 INSERT INTO 將資料插入外部 Hive 中繼存放區。

  • DDL 外部 Hive 中繼存放區的支援僅限於下列陳述式。

    • ALTER DATABASE SET DBPROPERTIES

    • ALTER TABLE ADD COLUMNS

    • ALTER TABLE ADD PARTITION

    • ALTER TABLE DROP PARTITION

    • ALTER TABLE RENAME PARTITION

    • ALTER TABLE REPLACE COLUMNS

    • ALTER TABLE SET LOCATION

    • ALTER TABLE SET TBLPROPERTIES

    • CREATE DATABASE

    • CREATE TABLE

    • CREATE TABLE AS

    • DESCRIBE TABLE

    • DROP DATABASE

    • DROP TABLE

    • SHOW COLUMNS

    • SHOW CREATE TABLE

    • SHOW PARTITIONS

    • SHOW SCHEMAS

    • SHOW TABLES

    • SHOW TBLPROPERTIES

  • 您可以擁有的已註冊目錄數目上限為 1,000。

  • Hive 中繼存放區不支援 Kerberos 身分驗證。

  • 若要搭配外部 Hive 中繼存放區或聯合查詢使用JDBC驅動程式,請在JDBC連線字串MetadataRetrievalMethod=ProxyAPI中包含 。如需JDBC驅動程式的相關資訊,請參閱 Connect 到 Amazon Athena JDBC

  • Hive 隱藏資料欄 $path$bucket$file_size$file_modified_time$partition$row_id 不能用於精細存取控制篩選。

  • Hive 隱藏的系統資料表,例如 example_table$propertiesexample_table$partitions 不受精細存取控制支援。

許可

預先建置和自訂的資料連接器可能需要存取下列資源,才能正常運作。檢查您用來確保您已VPC正確設定 的連接器資訊。如需在 Athena 中執行查詢和建立資料來源連接器所需IAM許可的相關資訊,請參閱 允許存取外部 Hive 中繼存放區的 Athena 資料連接器允許 Lambda 函數存取外部 Hive 中繼存放區

  • Simple Storage Service (Amazon S3) – 除了將查詢結果寫入 Simple Storage Service (Amazon S3) 中的 Athena 查詢結果位置外,資料連接器也會寫入 Simple Storage Service (Amazon S3) 中的溢出儲存貯體。對此 Simple Storage Service (Amazon S3) 位置,需有連線能力和許可。如需詳細資訊,請參閱本主題後面部分的 Amazon S3 中的溢出位置

  • Athena – 需要存取權才能檢查查詢狀態,並防止溢出掃描。

  • AWS Glue – 如果您的連接器使用 AWS Glue 作為補充或主要中繼資料,則需要存取。

  • AWS Key Management Service

  • 政策 – Hive 中繼存放區、Athena 查詢聯合,除了 之外,UDFs還需要政策AWS 受管政策: AmazonAthenaFullAccess。如需詳細資訊,請參閱Athena 中的 Identity and Access Management

Amazon S3 中的溢出位置

由於針對 Lambda 函數回應大小的限制,大於閾值的回應會溢入您在建立 Lambda 函數時指定的 Simple Storage Service (Amazon S3) 位置。Athena 會直接從 Simple Storage Service (Amazon S3) 讀取這些回應。

注意

Athena 不會移除 Simple Storage Service (Amazon S3) 上的回應檔案。建議您設定保留原則,以自動刪除回應檔案。