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 関数の例です。-
HiveMetaStoreLambdaFunc
–MetadataHandler
を拡張する Lambda 関数の例。 -
ThriftHiveMetaStoreClient
– Hive メタストアと通信する Thrift クライアント。このクライアントは Hive 2.3.0 用に書かれています。別の Hive バージョンを使用する場合は、このクラスを更新して、応答オブジェクトに互換性があることを確認する必要があります。 -
ThriftHiveMetaStoreClientFactory
– Lambda 関数の動作を制御します。たとえば、getHandlerProvider()
メソッドをオーバーライドして、独自のハンドラープロバイダーを提供できます。 -
hms.properties
– Lambda 関数を設定します。ほとんどの場合、次の 2 つのプロパティのみを更新する必要があります。-
hive.metastore.uris
–thrift://
形式の Hive メタストアの URI。<host_name>
:9083 -
hive.metastore.response.spill.location
- レスポンスオブジェクトのサイズが所定のしきい値 (4 MB など) を超える場合にこれらを保存する Amazon S3 の場所。しきい値はプロパティhive.metastore.response.spill.threshold
で定義されます。デフォルト値を変更することは推奨されません。
-
注記
これら 2 つのプロパティは、Lambda 環境変数の
HMS_URIS
およびSPILL_LOCATION
で上書きできます。これらの変数は、異なる Hive メタストアまたはスピルの場所で Lambda 関数を使用するときに、関数のソースコードを再コンパイルする代わりに使用します。 -
-
hms-lambda-layer
–hms-service-api
、hms-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-layer
の target
と呼ばれる出力フォルダにレイヤー .zip
ファイルを生成し、モジュール hms-lambd-func
に Lambda 関数 .jar
ファイルを生成します。