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 ファイルを生成します。