データカタログを外部 Hive メタストアに接続する - AWS Lake Formation

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

データカタログを外部 Hive メタストアに接続する

AWS Glue Data Catalog を Hive メタストアに接続するには、GlueDataCatalogFederation-HiveMetastore という AWS SAM アプリケーションをデプロイする必要があります。外部 Hive メタストアをデータカタログに接続するために必要なリソースを作成します。 AWS SAM アプリケーションには、 からアクセスできます AWS Serverless Application Repository。

AWS SAM アプリケーションは、Lambda 関数を使用して Amazon API Gateway の背後にある Hive メタストアの接続を作成します。 AWS SAM アプリケーションは、ユーザーからの入力としてユニフォームリソース識別子 (URI) を使用し、外部の Hive メタストアを Data Catalog に接続します。ユーザーが Hive テーブルに対してクエリを実行すると、Data Catalog は API Gateway エンドポイントを呼び出します。エンドポイントは Lambda 関数を呼び出して、Hive テーブルのメタデータを取得します。

データカタログを Hive メタストアに接続してアクセス許可を設定するには
  1. AWS SAM アプリケーションをデプロイします。
    1. にサインイン AWS Management Console し、 を開きます AWS Serverless Application Repository。

    2. ナビゲーションペインで、[Available applications] (利用可能なアプリケーション) を選択します。

    3. [パブリックアプリケーション] を選択します。

    4. [Show apps that create custom roles or resource policies] (カスタム IAM ロールまたはリソースポリシーを作成するアプリを表示する) オプションを選択します。

    5. 検索ボックスに、名前 GlueDataCatalogFederation-HiveMetastore を入力します。

    6. GlueDataCatalogFederation-HiveMetastore アプリケーションを選択します。

    7. [アプリケーション設定] で、Lambda 関数に最低限必要な次の設定を入力します。

      • アプリケーション名 - AWS SAM アプリケーションの名前。

      • GlueConnectionName - 接続の名前。

      • HiveMetastoreURIs- Hive メタストアホストの URI。

      • LambdaMemory - 128-10240 からの MB 単位の Lambda メモリの量。デフォルトは 1024 です。

      • LambdaTimeout - 秒単位の最大 Lambda 呼び出しランタイム。デフォルトは 30 です。

      • VPCSecurityGroupIdsVPCSubnetIds - Hive メタストアが存在する VPC の情報。

    8. [I acknowledge that this app creates custom IAM roles and resource policies] (このアプリがカスタム IAM ロールとリソースポリシーを作成することを承認します) を選択します。詳細については、[Info] (情報) リンクを選択してください。

    9. [Application settings] (アプリケーションの設定) セクションの右下で [Deploy] (デプロイ) を選択します。デプロイが完了すると、Lambda 関数が Lambda コンソールの [リソース] セクションに表示されます。

    アプリケーションは Lambda にデプロイされます。その名前の前に serverlessrepo- が付加され、アプリケーションが からデプロイされたことを示します AWS Serverless Application Repository。アプリケーションを選択すると、デプロイされたアプリケーションの各リソースが一覧表示される [リソース] ページに移動します。リソースには、Data Catalog と Hive メタストア間の通信を許可する Lambda 関数、 AWS Glue 接続、およびデータベースフェデレーションに必要なその他のリソースが含まれます。

  2. データカタログでフェデレーションデータベースを作成する

    Hive メタストアへの接続を作成したら、外部の Hive メタストアデータベースを指すフェデレーティッドデータベースを Data Catalog に作成できます。Data Catalog に接続するすべての Hive メタストアデータベースに対応するデータベースを Data Catalog に作成する必要があります。

    Lake Formation console
    1. [データ共有] ページで、[共有データベース] タブを選択し、[データベースの作成] を選択します。

    2. 接続名 で、ドロップダウンメニューから 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 コンソールまたは AWS CLIを使用して Hive メタストア内のテーブルのリストを表示できます。

    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;