

# Athena 外部 Hive メタストアコネクタを変更する
<a name="datastores-hive-reference-implementation"></a>

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

リファレンス実装は、次のモジュールを持つ [Apache Maven](https://maven.apache.org/) プロジェクトです。
+ `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://{{<host_name>}}:9083` 形式の Hive メタストアの URI。
    + `hive.metastore.response.spill.location` - レスポンスオブジェクトのサイズが所定のしきい値 (4 MB など) を超える場合にこれらを保存する Amazon S3 の場所。しきい値はプロパティ `hive.metastore.response.spill.threshold` で定義されます。デフォルト値を変更することは推奨されません。
**注記**  
これら 2 つのプロパティは、[Lambda 環境変数](https://docs.aws.amazon.com/lambda/latest/dg/env_variables.html)の `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 レスポンスをシミュレートできます。

## アーティファクトを自分で構築する
<a name="datastores-hive-reference-implementation-building-the-artifacts-yourself"></a>

ソースコードを変更した後、自分でアーティファクトを構築し、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` ファイルを生成します。