Athena mit einem Hive-Metastore mithilfe einer vorhandenen IAM-Ausführungsrolle verbinden
Um Ihren externen Hive-Metastore mit Athena über eine Lambda-Funktion zu verbinden, die eine vorhandene IAM-Rolle verwendet, können Sie die Referenzimplementierung des Athena-Connectors für externen Hive-Metastore von Athena verwenden.
Die drei wichtigsten Schritte sind wie folgt:
-
Klonen und Entwickeln – Klonen Sie die Athena Referenzimplementierung und erstellen Sie die JAR-Datei, die den Lambda-Funktionscode enthält.
-
AWS Lambda-Konsole – Erstellen Sie in der AWS Lambda-Konsole eine Lambda-Funktion, weisen Sie ihr eine vorhandene IAM-Ausführungsrolle zu und laden Sie den von Ihnen generierten Funktionscode hoch.
-
Amazon-Athena-Konsole – Erstellen Sie in der Amazon-Athena-Konsole einen Datenquellennamen, mit dem Sie in Ihren Athena-Abfragen auf Ihren externen Hive-Metastore verweisen können.
Wenn Sie bereits über Berechtigungen zum Erstellen einer benutzerdefinierten IAM-Rolle verfügen, können Sie einen einfacheren Workflow verwenden, der die Athena-Konsole und das AWS Serverless Application Repository verwendet, um eine Lambda-Funktion zu erstellen und zu konfigurieren. Weitere Informationen finden Sie unter Verbinden Sie Athena zu einem Apache Hive-Metastore.
Voraussetzungen
-
Git muss auf Ihrem System installiert sein.
-
Sie müssen Apache Maven
installiert haben. -
Sie haben eine IAM-Ausführungsrolle, die Sie der Lambda-Funktion zuweisen können. Weitere Informationen finden Sie unter Gewährung von Lambda-Funktionszugriff auf externe Hive-Metastores.
Klonen und entwickeln Sie die Lambda-Funktion
Der Funktionscode für die Athena-Referenzimplementierung ist ein Maven-Projekt, das sich auf GitHub unter awslabs/aws-athena-hive-metastore
So Klonen und erstellen Sie den Lambda-Funktionscode
-
Geben Sie den folgenden Befehl ein, um die Athena Referenzimplementierung zu klonen:
git clone https://github.com/awslabs/aws-athena-hive-metastore -
Führen Sie den folgenden Befehl aus, um die
.jar-Datei für die Lambda-Funktion zu entwickeln:mvn clean installNachdem das Projekt erfolgreich erstellt wurde, wird die folgende
.jar-Datei im Zielordner Ihres Projekts erstellt:hms-lambda-func-1.0-SNAPSHOT-withdep.jarIm nächsten Abschnitt verwenden Sie die AWS Lambda-Konsole, um diese Datei in Ihr Amazon-Web-Services-Konto hochzuladen.
Erstellen und konfigurieren Sie die Lambda-Funktion in der AWS Lambda-Konsole
In diesem Abschnitt verwenden Sie die AWS Lambda-Konsole, um eine Funktion zu erstellen, die eine vorhandene IAM-Ausführungsrolle verwendet. Nachdem Sie eine VPC für die Funktion konfiguriert haben, laden Sie den Funktionscode hoch und konfigurieren die Umgebungsvariablen für die Funktion.
So erstellen Sie die Lambda-Funktion:
In diesem Schritt erstellen Sie in der AWS Lambda-Konsole eine Funktion, die eine vorhandene IAM-Rolle verwendet.
So erstellen Sie eine Lambda-Funktion, die eine vorhandene IAM-Rolle verwendet
Melden Sie sich bei AWS-Managementkonsole an und öffnen Sie die AWS Lambda-Konsole unter https://console.aws.amazon.com/lambda
. -
Wählen Sie im Navigationsbereich Funktionen aus.
-
Wählen Sie Create function (Funktion erstellen).
-
Wählen Sie Von Grund auf neu schreiben aus.
-
Geben Sie für Funktionsname den Namen Ihrer Lambda-Funktion ein (z. B.
EHMSBasedLambda). -
Wählen Sie für Runtime die Option Java 8.
-
Erweitern Sie unter Berechtigungen die Option Standardausführungsrolle ändern.
-
Wählen Sie für Execution role (Ausführungsrolle) die Option Use an existing role (Vorhandene Rolle verwenden) aus.
-
Wählen Sie für Vorhandene Rolle die IAM-Ausführungsrolle aus, die Ihre Lambda-Funktion für Athena verwendet (in diesem Beispiel wird eine Rolle namens
AthenaLambdaExecutionRoleverwendet). -
Erweiterten Sie Advanced settings (Erweiterte Einstellungen).
-
Wählen Sie Netzwerk aktivieren aus.
-
Wählen Sie für VPC die VPC aus, auf die Ihre Funktion Zugriff hat.
-
Wählen Sie für Subnetze die VPC-Subnetze aus, die Lambda verwenden soll.
-
Wählen Sie für Sicherheitsgruppen die VPC-Sicherheitsgruppen aus, die Lambda verwenden soll.
-
Wählen Sie Create function (Funktion erstellen). Die AWS Lambda-Konsole und öffnet die Konfigurationsseite für Ihre Funktion und beginnt mit der Erstellung Ihrer Funktion.
Laden Sie den Code hoch und konfigurieren Sie die Lambda-Funktion
Wenn die Konsole Sie darüber informiert, dass Ihre Funktion erfolgreich erstellt wurde, können Sie den Funktionscode hochladen und seine Umgebungsvariablen konfigurieren.
So laden Sie Ihren Lambda-Funktionscode hoch und konfigurieren die Umgebungsvariablen
-
Stellen Sie in der Lambda-Konsole sicher, dass Sie sich auf der Seite der von Ihnen angegebenen Funktion auf der Registerkarte Code befinden.
-
Wählen Sie für Code source (Quellcode) Upload from (Hochladen von) und anschließend .zip or .jar file (.zip- oder .jar-Datei) aus.
-
Laden Sie die zuvor erstellte
hms-lambda-func-1.0-SNAPSHOT-withdep.jar-Datei hoch. -
Wählen Sie auf der Seite der Lambda-Funktion den Tab Konfiguration.
-
Wählen Sie im Bereich auf der linken Seite Umgebungsvariablen aus.
-
Wählen Sie im Abschnitt Environment variables (Umgebungsvariablen) Edit (Bearbeiten) aus.
-
Verwenden Sie auf der Seite Edit environment variables (Umgebungsvariablen bearbeiten) die Option Add environment variable (Umgebungsvariable hinzufügen), um die folgenden Umgebungsvariablenschlüssel und -werte hinzuzufügen:
-
HMS_URIS – Verwenden Sie die folgende Syntax, um den URI Ihres Hive-Metastore-Hosts einzugeben, der das Thrift-Protokoll an Port 9083 verwendet.
thrift://<host_name>:9083 -
SPILL_LOCATION – Geben Sie in Ihrem Amazon-Web-Services-Konto einen Amazon-S3-Speicherort an, um Spillover-Metadaten zu speichern, wenn die Antwortgröße der Lambda-Funktion 4 MB überschreitet.
-
-
Wählen Sie Save (Speichern) aus.
Zu diesem Zeitpunkt können Sie Athena so konfigurieren, dass Ihre Lambda-Funktion zum Herstellen einer Verbindung mit Ihrem Hive-Metastore verwendet wird. Informationen zu den erforderlichen Schritten finden Sie unter Konfigurieren Sie Athena für die Verwendung eines bereitgestellten Hive-Metastore-Connectors.