Den externen Hive-Metastore-Konnektor von Athena ändern
Wenn Sie spezielle Anforderungen haben, können Sie den Athena-Connector für den externen Hive-Metastore für Ihren eigenen Gebrauch modifizieren. Athena stellt eine Referenzimplementierung seines Connectors für den externen Hive-Metastore auf GitHub.com unter https://github.com/awslabs/aws-athena-hive-metastore
Die Referenzimplementierung ist ein Apache-Maven
-
hms-service-api– Enthält die API-Operationen zwischen der Lambda-Funktion und den Athena-Serviceclients. Diese API-Operationen sind in derHiveMetaStoreService-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 KlasseMetadataHandlerist 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 erweitertMetadataHandler. -
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 diegetHandlerProvider()-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 Formatthrift://.<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 definierthive.metastore.response.spill.threshold. Das Ändern des Standardwerts wird nicht empfohlen.
-
Anmerkung
Diese beiden Eigenschaften können von den Lambda-Umgebungsvariablen
HMS_URISundSPILL_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, dashms-service-api,hms-lambda-handlerund 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
Nachdem Sie den Quellcode geändert haben, können Sie 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 ausführen mvn install. 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.