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