

# Athena 외부 Hive 메타스토어 커넥터 수정
<a name="datastores-hive-reference-implementation"></a>

특별한 요구 사항이 있는 경우 외부 Hive 메타스토어용 Athena 커넥터를 용도에 맞게 수정할 수 있습니다. Athena는 GitHub.com에서 외부 Hive 메타스토어용 커넥터의 참조 구현을 제공합니다([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 함수를 구성합니다. 대부분의 경우 다음 두 속성만 업데이트가 필요합니다.
    + `hive.metastore.uris` - `thrift://<host_name>:9083` 형식의 Hive 메타스토어의 URI입니다.
    + `hive.metastore.response.spill.location`: 응답 객체의 크기가 지정된 임계값(예: 4MB)을 초과하는 경우 응답 객체를 저장할 Amazon S3 위치입니다. 임계값은 `hive.metastore.response.spill.threshold` 속성에 정의됩니다. 기본값을 변경하지 않는 것이 좋습니다.
**참고**  
이 두 속성은 [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 위치에 아티팩트를 업로드할 수 있습니다.

아티팩트를 빌드하기 전에 `hms-lambda-func` 모듈의 `hms.properties` 파일에서 `hive.metastore.uris` 및 `hive.metastore.response.spill.location` 속성을 업데이트합니다.

아티팩트를 빌드하려면 Apache Maven이 설치되어 있어야 하며 `mvn install` 명령을 실행해야 합니다. 그러면 `hms-lambda-layer` 모듈에서 `target`이라는 출력 폴더에 계층 `.zip` 파일이 생성되고 `hms-lambd-func` 모듈에서 Lambda 함수 `.jar` 파일이 생성됩니다.