Athena 外部 Hive メタストアコネクタを変更する - Amazon Athena

Athena 外部 Hive メタストアコネクタを変更する

特別な要件がある場合は、外部 Hive メタストア用の Athena コネクタを独自に使用するために変更できます。Athena は、GitHub.com (https://github.com/awslabs/aws-athena-hive-metastore) でコネクタのリファレンス実装を提供します。ほとんどのユースケースでは、リファレンス実装を変更する必要はありません。ただし、必要に応じて、ソースコードを変更し、アーティファクトを自分で構築することもできます。

リファレンス実装は、次のモジュールを持つ Apache Maven プロジェクトです。

  • hms-service-api – Lambda 関数と Athena サービスクライアント間の API オペレーションが含まれています。これらの API オペレーションは、HiveMetaStoreService インターフェイスで定義されます。これはサービス契約であるため、このモジュールでは何も変更しないでください。

  • hms-lambda-handler – すべての Hive メタストア API コールを処理する一連のデフォルト Lambda ハンドラーです。クラス MetadataHandler は、すべての API コールのディスパッチャーです。このパッケージを変更する必要はありません。

  • hms-lambda-func – 以下のコンポーネントを持つ Lambda 関数の例です。

    • HiveMetaStoreLambdaFuncMetadataHandler を拡張する Lambda 関数の例。

    • ThriftHiveMetaStoreClient – Hive メタストアと通信する Thrift クライアント。このクライアントは Hive 2.3.0 用に書かれています。別の Hive バージョンを使用する場合は、このクラスを更新して、応答オブジェクトに互換性があることを確認する必要があります。

    • ThriftHiveMetaStoreClientFactory – Lambda 関数の動作を制御します。たとえば、 getHandlerProvider() メソッドをオーバーライドして、独自のハンドラープロバイダーを提供できます。

    • hms.properties – Lambda 関数を設定します。ほとんどの場合、次の 2 つのプロパティのみを更新する必要があります。

      • hive.metastore.uristhrift://<host_name>:9083 形式の Hive メタストアの URI。

      • hive.metastore.response.spill.location - レスポンスオブジェクトのサイズが所定のしきい値 (4 MB など) を超える場合にこれらを保存する Amazon S3 の場所。しきい値はプロパティ hive.metastore.response.spill.threshold で定義されます。デフォルト値を変更することは推奨されません。

    注記

    これら 2 つのプロパティは、Lambda 環境変数HMS_URIS および SPILL_LOCATION で上書きできます。これらの変数は、異なる Hive メタストアまたはスピルの場所で Lambda 関数を使用するときに、関数のソースコードを再コンパイルする代わりに使用します。

  • hms-lambda-layerhms-service-apihms-lambda-handler、およびその依存関係を .zip ファイルに入れる Maven アセンブリプロジェクト。.zip ファイルは、複数の Lambda 関数による使用のために、Lambda レイヤーとして登録されます。

  • hms-lambda-rnp - Lambda 関数からのレスポンスを記録し、それを使用してレスポンスを再生します。このモデルを使用して、テスト用の Lambda レスポンスをシミュレートできます。

アーティファクトを自分で構築する

ソースコードを変更した後、自分でアーティファクトを構築し、Amazon S3 の場所にアップロードできます。

アーティファクトを構築する前に、hive.metastore.uris モジュール内の hive.metastore.response.spill.location ファイルにあるプロパティ hms.properties および hms-lambda-func を更新します。

アーティファクトを構築するには、Apache Maven をインストールし、mvn install コマンドを実行する必要があります。これは、モジュール hms-lambda-layertarget と呼ばれる出力フォルダにレイヤー .zip ファイルを生成し、モジュール hms-lambd-func に Lambda 関数 .jar ファイルを生成します。