Modificare il connettore metastore Hive esterno Athena
Se si hanno esigenze particolari, è possibile 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
L'implementazione di riferimento è un progetto Apache Maven
-
hms-service-api– Contiene le operazioni API tra la funzione Lambda e i client del servizio Athena. Queste operazioni API sono definite nell'interfacciaHiveMetaStoreService. Poiché si tratta di un contratto di servizio, non è necessario modificare nulla in questo modulo. -
hms-lambda-handler– Un insieme di gestori Lambda predefiniti che elaborano tutte le chiamate API al metastore Hive. La classeMetadataHandlerè il dispatcher per tutte le 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 estendeMetadataHandler. -
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 metodogetHandlerProvider(). -
hms.properties– Configura funzione Lambda La maggior parte dei casi d’uso richiede solo l'aggiornamento delle due proprietà seguenti.-
hive.metastore.uris– l’URI del metastore Hive nel formatothrift://.<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_URISeSPILL_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 inseriscehms-service-api,hms-lambda-handlere le loro dipendenze in un file.zip. Il file.zipviene 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, è possibile creare manualmente gli artefatti e caricarli in 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.