

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
<a name="datastores-hive-reference-implementation"></a>

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](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, è possibile modificare il codice sorgente e caricare gli artefatti e sviluppare gli artefatti autonomamente.

L'implementazione di riferimento è un progetto [Apache Maven](https://maven.apache.org/) 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](https://docs.aws.amazon.com/lambda/latest/dg/env_variables.html) `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
<a name="datastores-hive-reference-implementation-building-the-artifacts-yourself"></a>

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`.