

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Modification du connecteur Athena pour métastore Hive externe
<a name="datastores-hive-reference-implementation"></a>

Si vous avez des exigences particulières, vous pouvez modifier le connecteur Athena pour métastore Hive externe pour votre propre usage. Athena fournit une implémentation de référence du connecteur sur GitHub .com à l'adresse. [https://github.com/awslabs/aws-athena-hive-metastore](https://github.com/awslabs/aws-athena-hive-metastore) La plupart des cas d'utilisation n'exigent pas que vous modifiiez l'implémentation de référence. Toutefois, si nécessaire, vous pouvez modifier le code source et créer les artefacts vous-même.

L'implémentation de référence est un projet [Apache Maven](https://maven.apache.org/) qui a les modules suivants :
+ `hms-service-api` – Contient les opérations d'API entre la fonction Lambda et les clients du service Athena. Ces opérations d'API sont définies dans l'interface `HiveMetaStoreService`. Comme il s'agit d'un contrat de service, vous ne devriez rien changer dans ce module.
+ `hms-lambda-handler` – Un ensemble de gestionnaires Lambda par défaut qui traitent tous les appels de l'API de métastore Hive. La classe `MetadataHandler` est le répartiteur pour tous les appels d'API. Vous n'avez pas besoin de modifier ce package.
+ `hms-lambda-func` – Exemple de fonction Lambda comportant les composants suivants.
  + `HiveMetaStoreLambdaFunc` – Exemple de fonction Lambda qui étend `MetadataHandler`.
  + `ThriftHiveMetaStoreClient` – Client Thrift qui communique avec le métastore Hive. Ce client est écrit pour Hive 2.3.0. Si vous utilisez une version différente de Hive, vous devrez peut-être mettre à jour cette classe pour vous assurer que les objets de réponse sont compatibles.
  + `ThriftHiveMetaStoreClientFactory` – Contrôle le comportement de la fonction Lambda. Par exemple, vous pouvez fournir votre propre ensemble de fournisseurs de gestionnaires en remplaçant la méthode `getHandlerProvider()`.
  + `hms.properties` – Configure la fonction Lambda. La plupart des cas nécessitent la mise à jour des deux propriétés suivantes uniquement.
    + `hive.metastore.uris` – l'URI du métastore Hive au format `thrift://<host_name>:9083`.
    + `hive.metastore.response.spill.location` : l'emplacement Amazon S3 pour stocker les objets de réponse lorsque leur taille dépasse un seuil donné (par exemple, 4 Mo). Le seuil est défini dans la propriété `hive.metastore.response.spill.threshold`. Il n'est pas recommandé de modifier la valeur par défaut.
**Note**  
Ces deux propriétés peuvent être remplacées par les [variables d'environnement Lambda](https://docs.aws.amazon.com/lambda/latest/dg/env_variables.html) `HMS_URIS` et `SPILL_LOCATION`. Utilisez ces variables au lieu de recompiler le code source de la fonction Lambda lorsque vous souhaitez utiliser la fonction avec un métastore Hive ou un emplacement de déversement différent.
+ `hms-lambda-layer` – Un projet d'assemblage Maven qui place `hms-service-api`, `hms-lambda-handler` et leurs dépendances dans un fichier `.zip`. Le fichier `.zip` est enregistré en tant que couche Lambda pour une utilisation par plusieurs fonctions Lambda.
+ `hms-lambda-rnp` – Enregistre les réponses d'une fonction Lambda, puis les utilise pour rejouer la réponse. Vous pouvez utiliser ce modèle pour simuler des réponses Lambda à des fins de test.

## Construire les artefacts vous-même
<a name="datastores-hive-reference-implementation-building-the-artifacts-yourself"></a>

Une fois le code source modifié, vous pouvez créer les artefacts vous-même et les télécharger dans un emplacement Amazon S3.

Avant de créer les artefacts, mettez à jour les propriétés `hive.metastore.uris` et `hive.metastore.response.spill.location` dans le fichier `hms.properties` du module `hms-lambda-func`.

Pour construire les artefacts, vous devez avoir Apache Maven installé et exécuter la commande `mvn install`. Cela génère le fichier `.zip` de couche dans le dossier de sortie appelé `target` dans le module `hms-lambda-layer` et le fichier `.jar` de fonction Lambda dans le module `hms-lambd-func`.