將 Data Catalog 連接至外部 Hive 中繼存放區 - AWS Lake Formation

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

將 Data Catalog 連接至外部 Hive 中繼存放區

若要將 AWS Glue Data Catalog 連線到 Hive 中繼存放區,您需要部署名為 GlueDataCatalogFederation-HiveMetastore AWS SAM 的應用程式。它建立將外部 Hive 中繼存放區與 Data Catalog 連線所需的資源。您可以在 中存取 AWS SAM 應用程式 AWS Serverless Application Repository。

AWS SAM 應用程式會使用 Lambda 函數為 Amazon API Gateway 後方的 Hive 中繼存放區建立連線。 AWS SAM 應用程式會使用統一的資源識別碼 (URI) 作為使用者的輸入,並將外部 Hive 中繼存放區連接至 Data Catalog。當使用者在 Hive 資料表上執行查詢時,Data Catalog 會呼叫API閘道端點。端點會叫用 Lambda 函數來擷取 Hive 資料表的中繼資料。

將 Data Catalog 連接至 Hive 中繼存放區並設定許可
  1. 部署 AWS SAM 應用程式。
    1. 登入 AWS Management Console 並開啟 AWS Serverless Application Repository。

    2. 選擇在導覽窗格中的 Available applications (可用的應用程式)。

    3. 選擇 公有應用程式

    4. 選取 顯示建立自訂IAM角色或資源政策的應用程式

    5. 在搜尋方塊中,輸入名稱 GlueDataCatalogFederation-HiveMetastore

    6. 選擇 GlueDataCatalogFederation-HiveMetastore 應用程式。

    7. 應用程式設定 下,輸入 Lambda 函數的下列最低必要設定:

      • 應用程式名稱 - 應用程式的名稱 AWS SAM 。

      • GlueConnectionName - 連線的名稱。

      • HiveMetastoreURIs - Hive 中繼存放區主機URI的 。

      • LambdaMemory - 從 128-10240 開始,Lambda 記憶體的 MB 數量。預設值為 1024。

      • LambdaTimeout - Lambda 調用執行時間上限,以秒為單位。預設值為 30。

      • VPCSecurityGroupIdsVPCSubnetIds - VPC Hive 中繼存放區所在的 資訊。

    8. 選取我確認此應用程式會建立自訂IAM角色和資源政策 。如需詳細資訊,請選擇 Info (資訊) 連結。

    9. Application settings (應用程式設定) 部分的右下方,選擇 Deploy (部署)。部署完成後,Lambda 函數會出現在 Lambda 主控台的 Resources (資源) 區段中。

    應用程式已部署至 Lambda。其名稱以 serverlessrepo- 開頭,表示應用程式已從 部署 AWS Serverless Application Repository。選取應用程式會帶您前往資源頁面,其中會列出已部署應用程式的每個資源。資源包括 Lambda 函數,允許資料目錄與 Hive 中繼存放區之間、 AWS Glue 連線,以及資料庫聯合所需的其他資源進行通訊。

  2. 在 Data Catalog 中建立聯合資料庫。

    建立 Hive 中繼存放區連線後,您可以在 Data Catalog 中建立聯合資料庫,該資料庫指向外部 Hive 中繼存放區資料庫。您需要在 Data Catalog 中為連線到 Data Catalog 的每個 Hive 中繼存放區資料庫建立對應的資料庫。

    Lake Formation console
    1. 資料共用頁面上,選擇共用資料庫索引標籤,然後選擇建立資料庫

    2. 對於 Connection 名稱 ,從下拉式功能表中選擇 Hive 中繼存放區連線的名稱。

    3. 輸入資料庫的唯一資料庫名稱和聯合來源識別符。這是您在查詢資料表時在SQL陳述式中使用的名稱。名稱最多可包含 255 個字元,且您的帳戶內必須是唯一的。

    4. 選擇建立資料庫

    AWS CLI
    aws glue create-database \ '{ "CatalogId": "<111122223333>", "database-input": { "Name":"<fed_glue_db>", "FederatedDatabase":{ "Identifier":"<hive_db_on_emr>", "ConnectionName":"<hms_connection>" } } }'
  3. 檢視聯合資料庫中的資料表。

    建立聯合資料庫之後,您可以使用 Lake Formation 主控台或 檢視 Hive 中繼存放區中的資料表清單 AWS CLI。

    Lake Formation console
    1. 共用資料庫索引標籤中選取資料庫名稱。

    2. 資料庫頁面上,選擇檢視資料表

    AWS CLI

    下列範例示範如何擷取連線定義、資料庫名稱,以及資料庫中的部分或全部資料表。將 Data Catalog 的 ID 取代為您用來建立資料庫的有效 AWS 帳戶 ID。hms_connection 以連線名稱取代 。

    aws glue get-connection \ --name <hms_connection> \ --catalog-id 111122223333
    aws glue get-database \ --name <fed_glu_db> \ --catalog-id 111122223333
    aws glue get-tables \ --database-name <fed_glue_db> \ --catalog-id 111122223333
    aws glue get-table \ --database-name <fed_glue_db> \ --name <hive_table_name> \ --catalog-id 111122223333
  4. 授予許可。

    建立資料庫之後,您可以將許可授予帳戶中的其他IAM使用者和角色,或外部 AWS 帳戶 和組織。您將無法在聯合式資料庫上授予寫入資料許可 (插入、刪除) 和中繼資料許可 (變更、捨棄、建立)。如需授予許可的詳細資訊,請參閱 管理 Lake Formation 許可

  5. 查詢聯合資料庫。

    授予許可後,使用者可以使用 Athena 和 Amazon Redshift 登入並開始查詢聯合資料庫。使用者現在可以使用本機資料庫名稱,在SQL查詢中參考 Hive 資料庫。

    Amazon Athena 查詢語法範例

    fed_glue_db 將 取代為您先前建立的本機資料庫名稱。

    Select * from fed_glue_db.customers limit 10;