Implementazione di riferimento - 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à.

Implementazione di riferimento

Athena fornisce un'implementazione di riferimento del suo connettore per il metastore Hive esterno su .com all'indirizzo https://github.com/awslabs/. GitHub aws-athena-hive-metastore

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

  • hms-service-api – Contiene le operazioni API tra la funzione Lambda e i client del servizio Athena. Queste operazioni API sono definite nell'interfaccia HiveMetaStoreService. 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 classe MetadataHandler è 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 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: l’URI del metastore 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

La maggior parte dei casi d'uso non richiede la modifica dell'implementazione di riferimento. Tuttavia, se necessario, è possibile modificare il codice sorgente, 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.