Referenz-Implementierung - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Referenz-Implementierung

Athena stellt auf GitHub .com unter https://github.com/awslabs/ eine Referenzimplementierung seines Connectors für externen Hive-Metastore bereit. aws-athena-hive-metastore

Die Referenzimplementierung ist ein Apache-Maven-Projekt das die folgenden Module hat:

  • hms-service-api – Enthält die API-Operationen zwischen der Lambda-Funktion und den Athena-Serviceclients. Diese API-Operationen sind in der HiveMetaStoreService-Schnittstelle definiert. Da es sich um einen Servicevertrag handelt, sollten Sie in diesem Modul nichts ändern.

  • hms-lambda-handler – Eine Reihe von Standard-Lambda-Handlern, die alle Hive-Metastore-API-Aufrufe verarbeiten. Die Klasse MetadataHandler ist der Dispatcher für alle API-Aufrufe. Sie müssen dieses Paket nicht ändern.

  • hms-lambda-func – Eine Lambda-Beispielfunktion mit den folgenden Komponenten.

    • HiveMetaStoreLambdaFunc – Eine Lambda-Beispielfunktion, die MetadataHandler erweitert.

    • ThriftHiveMetaStoreClient – Ein Thrift-Client, der mit dem Hive-Metastore kommuniziert. Dieser Client ist für Hive 2.3.0 geschrieben. Wenn Sie eine andere Hive-Version verwenden, müssen Sie diese Klasse möglicherweise aktualisieren, um sicherzustellen, dass die Antwortobjekte kompatibel sind.

    • ThriftHiveMetaStoreClientFactory – Steuert das Verhalten der Lambda-Funktion. Beispielsweise können Sie Ihre eigene Gruppe von Handler-Anbietern bereitstellen, indem Sie die getHandlerProvider()-Methode überschreiben.

    • hms.properties – Konfigurieren Sie die Lambda-Funktion In den meisten Fällen müssen nur die folgenden beiden Eigenschaften aktualisiert werden.

      • hive.metastore.uris – der URI des Hive-Metastores im Format thrift://<host_name>:9083.

      • hive.metastore.response.spill.location: Der Amazon-S3-Speicherort zum Speichern von Antwortobjekten, wenn ihre Größe einen bestimmten Schwellenwert überschreitet (z. B. 4 MB). Der Schwellenwert wird in der Eigenschaft hive.metastore.response.spill.threshold definiert. Das Ändern des Standardwerts wird nicht empfohlen.

    Anmerkung

    Diese beiden Eigenschaften können von den Lambda-Umgebungsvariablen HMS_URIS und SPILL_LOCATION überschrieben werden. Verwenden Sie diese Variablen, anstatt den Quellcode für die Lambda-Funktion neu zu kompilieren, wenn Sie die Funktion mit einem anderen Hive-Metastore oder Überlaufspeicherort verwenden möchten.

  • hms-lambda-layer – Ein Maven-Assemblyprojekt, das hms-service-api, hms-lambda-handler und ihre Abhängigkeiten in eine .zip-Datei setzt. Die .zip-Datei wird als Lambda-Ebene für die Verwendung durch mehrere Lambda-Funktionen registriert.

  • hms-lambda-rnp – Zeichnet die Antworten einer Lambda-Funktion auf und verwendet sie dann zur Wiedergabe der Antwort. Sie können dieses Modell verwenden, um Lambda-Antworten zu Testzwecken zu simulieren.

Entwickeln der Artefakte

In den meisten Anwendungsfällen ist es nicht erforderlich, die Referenzimplementierung zu ändern. Bei Bedarf können Sie jedoch den Quellcode ändern, die Artefakte selbst erstellen und zu einem Amazon-S3-Speicherort hochladen.

Bevor Sie die Artefakte erstellen, aktualisieren Sie die Eigenschaften hive.metastore.uris und hive.metastore.response.spill.location in der hms.properties-Datei im hms-lambda-func-Modul.

Um die Artefakte zu erstellen, müssen Sie Apache Maven installiert haben und den Befehl mvn install ausführen. Dies erzeugt die Ebene-.zip-Datei im Ausgabeordner mit dem Namen target im Modul hms-lambda-layer und die Lambda-Funktions-.jar-Datei im Modul hms-lambd-func.