Modificación del conector del metastore externo de Hive de Athena
Si tiene requisitos especiales, puede modificar el conector de Athena para el metastore externo de Hive para su propio uso. Athena proporciona una implementación de referencia del conector en GitHub.com en https://github.com/awslabs/aws-athena-hive-metastore
La implementación de referencia es un proyecto de Apache Maven
-
hms-service-api
: contiene las operaciones de la API entre la función de Lambda y los clientes del servicio Athena. Estas operaciones de API se definen en la interfazHiveMetaStoreService
. Debido a que este es un contrato de servicio, no debe cambiar nada en este módulo. -
hms-lambda-handler
: un conjunto de controladores Lambda predeterminados que procesan todas las llamadas a la API del metaalmacén de Hive. La claseMetadataHandler
es el distribuidor de todas las llamadas a la API. No es necesario cambiar este paquete. -
hms-lambda-func
: una función de Lambda de ejemplo que tiene los siguientes componentes.-
HiveMetaStoreLambdaFunc
: una función de Lambda de ejemplo que amplíaMetadataHandler
. -
ThriftHiveMetaStoreClient
: un cliente de Thrift que se comunica con el metaalmacén de Hive. Este cliente está escrito para Hive 2.3.0. Si utiliza una versión de Hive distinta, es posible que tenga que actualizar esta clase para asegurarse de que los objetos de respuesta son compatibles. -
ThriftHiveMetaStoreClientFactory
: controla el comportamiento de la función de Lambda. Por ejemplo, puede proporcionar su propio conjunto de proveedores de controladores anulando el métodogetHandlerProvider()
. -
hms.properties
: configura la función de Lambda. La mayoría de los casos solo requieren actualizar las dos propiedades siguientes.-
hive.metastore.uris
: el URI del metaalmacén de Hive en el formatothrift://
.<host_name>
:9083 -
hive.metastore.response.spill.location
: la ubicación de Amazon S3 para almacenar objetos de respuesta cuando los tamaños superan un umbral determinado (por ejemplo, 4 MB). El umbral se define en la propiedadhive.metastore.response.spill.threshold
. No se recomienda cambiar el valor predeterminado.
-
nota
Estas dos propiedades se pueden anular con las variables de entorno de Lambda
HMS_URIS
ySPILL_LOCATION
. Utilice estas variables en lugar de volver a compilar el código fuente de la función de Lambda cuando desee utilizar la función con un metaalmacén de Hive o ubicación de desbordamiento diferente. -
-
hms-lambda-layer
: un proyecto de ensamblaje de Maven que coloca ahms-service-api
,hms-lambda-handler
y sus dependencias en un archivo.zip
. El archivo.zip
se registra como una capa de Lambda para su uso por múltiples funciones de Lambda. -
hms-lambda-rnp
: registra las respuestas de una función de Lambda y, a continuación, las usa para reproducir la respuesta. Puede usar este modelo para simular las respuestas de Lambda a fin de realizar pruebas.
Cree los artefactos usted mismo
Después de modificar el código fuente, puede crear los artefactos por su cuenta y cargarlos en una ubicación de Amazon S3.
Antes de crear los artefactos, actualice las propiedades hive.metastore.uris
y hive.metastore.response.spill.location
en el archivo hms.properties
en el módulo hms-lambda-func
.
Para construir los artefactos, debe tener instalado Apache Maven y ejecutar el comando mvn install
. Esto genera el archivo .zip
de capa en la carpeta de salida denominada target
en el módulo hms-lambda-layer
y el archivo .jar
de la función de Lambda en el módulo hms-lambd-func
.