Modificar o conector externo do Hive metastore do Athena
Se você tiver requisitos especiais, poderá modificar o conector Athena para o metastore externo do Hive para seu próprio uso. O Athena oferece uma implementação de referência do conector no GitHub.com em https://github.com/awslabs/aws-athena-hive-metastore
A implementação de referência é um projeto Apache Maven
-
hms-service-api: contém as operações de API entre a função do Lambda e os clientes dos serviços do Athena. Essas operações da API são definidas na interface doHiveMetaStoreService. Como este é um contrato de serviço, você não deve alterar nada neste módulo. -
hms-lambda-handler: um conjunto de manipuladores padrão do Lambda que processa todas as chamadas de API de metastore do Hive. A classeMetadataHandleré o dispatcher para todas as chamadas da API. Você não precisa alterar este pacote. -
hms-lambda-func: um exemplo de função do Lambda que tem os componentes a seguir.-
HiveMetaStoreLambdaFunc: um exemplo de função do Lambda que estendeMetadataHandler. -
ThriftHiveMetaStoreClient: um cliente Thrift que se comunica com o metastore do Hive. Esse cliente foi escrito para o Hive 2.3.0. Se você usar uma versão diferente do Hive, talvez seja necessário atualizar essa classe para garantir que os objetos de resposta sejam compatíveis. -
ThriftHiveMetaStoreClientFactory: controla o comportamento da função do Lambda. Por exemplo, você pode fornecer seu próprio conjunto de provedores de manipuladores substituindo o métodogetHandlerProvider(). -
hms.properties: configura a função do Lambda. A maioria dos casos requer a atualização de apenas as duas propriedades a seguir.-
hive.metastore.uris: o URI do metastore do Hive no formatothrift://.<host_name>:9083 -
hive.metastore.response.spill.location: o local do Amazon S3 para armazenar objetos de resposta quando os tamanhos excedem um determinado limite (por exemplo, 4 MB). O limite é definido na propriedadehive.metastore.response.spill.threshold. Não é recomendável alterar o valor padrão.
-
nota
Essas duas propriedades podem ser substituídas pelas variáveis de ambiente do Lambda
HMS_URISeSPILL_LOCATION. Use essas variáveis em vez de recompilar o código-fonte da função do Lambda para usar a função com um metastore do Hive ou local de vazamento diferente. -
-
hms-lambda-layer: um projeto de montagem do Maven que colocahms-service-api,hms-lambda-handlere suas dependências em um arquivo.zip. O arquivo.zipé registrado como uma camada do Lambda para uso por várias funções do Lambda. -
hms-lambda-rnp: registra as respostas de uma função do Lambda e, em seguida, usa-as para reproduzir a resposta. É possível usar esse modelo para simular respostas do Lambda para testes.
Criar seus próprios artefatos
Após modificar o código-fonte, é possível criar os artefatos você mesmo e carregá-los em um local do Amazon S3.
Antes de criar os artefatos, atualize as propriedades hive.metastore.uris e hive.metastore.response.spill.location no arquivo hms.properties no módulo hms-lambda-func.
Para criar os artefatos, você deve ter o Apache Maven instalado e executar o comando mvn install. Isso gera o arquivo .zip de camada na pasta de saída chamada target no módulo hms-lambda-layer e o arquivo .jar da função do Lambda no módulo hms-lambd-func.