Modificare il connettore metastore Hive esterno Athena - Amazon Athena

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Modificare il connettore metastore Hive esterno Athena

Se hai esigenze particolari, puoi modificare il connettore Athena per il metastore Hive esterno per uso personale. Athena fornisce un'implementazione di riferimento del connettore su GitHub .com all'indirizzo. https://github.com/awslabs/aws-athena-hive-metastore La maggior parte dei casi d'uso non richiede la modifica dell'implementazione di riferimento. Tuttavia, se necessario, puoi modificare il codice sorgente e creare gli artefatti da solo.

L'implementazione di riferimento è un progetto Apache Maven che presenta i seguenti moduli:

  • hms-service-api— Contiene le API operazioni tra la funzione Lambda e i client del servizio Athena. Queste API operazioni sono definite nell'interfaccia. HiveMetaStoreService Poiché si tratta di un contratto di servizio, non è necessario modificare nulla in questo modulo.

  • hms-lambda-handler— Un set di gestori Lambda predefiniti che elaborano tutte le chiamate al metastore Hive. API La classe è il dispatcher per tutte le MetadataHandler chiamate. API Non è necessario modificare questo pacchetto.

  • hms-lambda-func – Una funzione Lambda di esempio con i seguenti componenti.

    • HiveMetaStoreLambdaFunc Una funzione Lambda di esempio che estende MetadataHandler.

    • ThriftHiveMetaStoreClient: Un client Thrift che comunica con il metastore Hive. Questo client è stato predisposto per Hive 2.3.0. Se si utilizza una versione di Hive diversa, potrebbe essere necessario aggiornare questa classe per assicurarsi che gli oggetti di risposta siano compatibili.

    • ThriftHiveMetaStoreClientFactory – Controlla il comportamento della funzione Lambda. Ad esempio, è possibile fornire il proprio set di provider di gestori sovrascrivendo il metodo getHandlerProvider().

    • hms.properties – Configura funzione Lambda La maggior parte dei casi d’uso richiede solo l'aggiornamento delle due proprietà seguenti.

      • hive.metastore.uris— il metastore URI di Hive nel formato. thrift://<host_name>:9083

      • hive.metastore.response.spill.location: la posizione Amazon S3 in cui archiviare gli oggetti di risposta quando le loro dimensioni superano una determinata soglia (ad esempio, 4 MB). La soglia viene definita nella proprietà hive.metastore.response.spill.threshold. La modifica del valore predefinito non è consigliata.

    Nota

    Queste due proprietà possono essere sovrascritte dalle variabili di ambiente Lambda HMS_URIS e SPILL_LOCATION. Utilizzare queste variabili invece di ricompilare il codice sorgente per la funzione Lambda quando si desidera utilizzare la funzione con una diversa posizione del metastore Hive o con una diversa posizione di spill.

  • hms-lambda-layer: un progetto assembly di Maven che inserisce hms-service-api, hms-lambda-handler e le loro dipendenze in un file .zip. Il file .zip viene registrato come layer Lambda per l'utilizzo da parte di più funzioni Lambda.

  • hms-lambda-rnp: registra le risposte di una funzione Lambda e le utilizza per riprodurre la risposta. Puoi utilizzare questo modello per simulare le risposte Lambda per i test.

Costruire gli artefatti in modo autonomo

Dopo aver modificato il codice sorgente, puoi creare tu stesso gli artefatti e caricarli su una posizione Amazon S3.

Prima di creare gli artefatti, aggiornare le proprietà hive.metastore.uris e hive.metastore.response.spill.location nel file hms.properties nel modulo hms-lambda-func.

Per costruire gli artefatti, è necessario avere installato Apache Maven ed eseguire il comando mvn install. Questo genera il layer del file .zip nella cartella di output chiamata target nel modulo hms-lambda-layer e il file .jar della funzione Lambda nel modulo hms-lambd-func.