Amazon Athena Vertica Konnektor - 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.

Amazon Athena Vertica Konnektor

Vertica ist eine spaltenbasierte Datenbankplattform, die in der Cloud oder On-Premises bereitgestellt werden kann, die Data Warehouses im Exabyte-Maßstab unterstützt. Sie können den Amazon-Athena-Vertica-Konnektor in Verbundabfragen verwenden, um Vertica-Datenquellen von Athena abzufragen. Sie können beispielsweise analytische Abfragen über ein Data Warehouse in Vertica und einen Data Lake in Amazon S3 ausführen.

Voraussetzungen

Einschränkungen

  • Weil der Athena-Vertica-Konnektor Amazon S3 Select verwendet, um Parquet-Dateien aus Amazon S3 zu lesen, kann die Leistung des Konnektors langsam sein. Wenn Sie große Tabellen abfragen, empfehlen wir, dass Sie eine CREATE TABLE AS (SELECT ...)-Abfrage und SQL-Prädikate verwenden.

  • Aufgrund eines bekannten Problems in Athena Federated Query veranlasst der Konnektor derzeit, dass Vertica alle Spalten der abgefragten Tabelle nach Amazon S3 exportiert, aber nur die abgefragten Spalten sind in den Ergebnissen auf der Athena-Konsole sichtbar.

  • Schreiboperationen wie DDL werden nicht unterstützt.

  • Alle relevanten Lambda-Grenzwerte. Weitere Informationen finden Sie unter Lambda quotas (Lambda-Kontingente) im AWS Lambda -Entwicklerhandbuch.

Workflow

Das folgende Diagramm zeigt den Arbeitsablauf einer Abfrage, die den Vertica-Konnektor verwendet.

Arbeitsablauf einer Vertica-Abfrage von Amazon Athena
  1. Eine SQL-Abfrage wird für eine oder mehrere Tabellen in Vertica ausgegeben.

  2. Der Konnektor analysiert die SQL-Abfrage, um den entsprechenden Teil über die JDBC-Verbindung an Vertica zu senden.

  3. Die Verbindungszeichenfolgen verwenden den Benutzernamen und das Passwort, die AWS Secrets Manager für den Zugriff auf Vertica gespeichert sind.

  4. Der Konnektor umschließt die SQL-Abfrage mit einem Vertica-EXPORT-Befehl, wie im folgenden Beispiel.

    EXPORT TO PARQUET (directory = 's3://DOC-EXAMPLE-BUCKET/folder_name, Compression='Snappy', fileSizeMB=64) OVER() as SELECT PATH_ID, ... SOURCE_ITEMIZED, SOURCE_OVERRIDE FROM DELETED_OBJECT_SCHEMA.FORM_USAGE_DATA WHERE PATH_ID <= 5;
  5. Vertica verarbeitet die SQL-Abfrage und sendet die Ergebnismenge an einen Amazon-S3-Bucket. Für einen besseren Durchsatz verwendet Vertica die EXPORT-Option, um den Schreibvorgang mehrerer Parquet-Dateien zu parallelisieren.

  6. Athena durchsucht den Amazon-S3-Bucket, um die Anzahl der Dateien zu ermitteln, die für die Ergebnismenge gelesen werden sollen.

  7. Athena ruft die Lambda-Funktion mehrfach auf und verwendet Amazon S3 Select, um die Parquet-Dateien aus der Ergebnismenge zu lesen. Durch mehrere Aufrufe kann Athena das Lesen der Amazon-S3-Dateien parallelisieren und einen Durchsatz von bis zu 100 GB pro Sekunde erreichen.

  8. Athena verarbeitet die von Vertica zurückgegebenen Daten mit aus dem Data Lake gescannten Daten und gibt das Ergebnis zurück.

Bedingungen

Die folgenden Begriffe beziehen sich auf den Vertica-Konnektor.

  • Datenbank-Instance – Jede Instance einer Vertica-Datenbank, die auf Amazon EC2 bereitgestellt wird.

  • Handler – Ein Lambda-Handler, der auf Ihre Datenbank-Instance zugreift. Ein Handler kann für Metadaten oder für Datensätze verwendet werden.

  • Metadaten-Handler – Ein Lambda-Handler, der Metadaten von Ihrer Datenbank-Instance abruft.

  • Record Handler – Ein Lambda-Handler, der Datensätze aus Ihrer Datenbank-Instance abruft.

  • Composite Handler – Ein Lambda-Handler, der sowohl Metadaten als auch Datensätze aus Ihrer Datenbank-Instance abruft.

  • Eigenschaft oder Parameter – Eine Datenbankeigenschaft, die von Handlern zum Extrahieren von Datenbankinformationen verwendet wird. Sie konfigurieren diese Eigenschaften als Lambda-Umgebungsvariablen.

  • Verbindungszeichenfolge – Eine Textzeichenfolge, die verwendet wird, um eine Verbindung zu einer Datenbank-Instance herzustellen.

  • Katalog — Ein nicht bei Athena registrierter AWS Glue Katalog, der ein erforderliches Präfix für die connection_string Immobilie ist.

Parameter

Der Amazon Athena Vertica Konnektor stellt Konfigurationsoptionen über Lambda-Umgebungsvariablen zur Verfügung. Sie können die folgenden Lambda-Umgebungsvariablen verwenden, um den Konnektor zu konfigurieren.

  • AthenaCatalogName— Name der Lambda-Funktion

  • ExportBucket— Der Amazon S3 S3-Bucket, in den die Vertica-Abfrageergebnisse exportiert werden.

  • SpillBucket— Der Name des Amazon S3 S3-Buckets, in den diese Funktion Daten übertragen kann.

  • SpillPrefix— Das Präfix für den SpillBucket Ort, an dem diese Funktion Daten verschicken kann.

  • SecurityGroupIds— Eine oder mehrere IDs, die der Sicherheitsgruppe entsprechen, die auf die Lambda-Funktion angewendet werden soll (z. B., sg1sg2, odersg3).

  • SubnetIds— Eine oder mehrere Subnetz-IDs, die dem Subnetz entsprechen, das die Lambda-Funktion für den Zugriff auf Ihre Datenquelle verwenden kann (z. B.subnet1, oder). subnet2

  • SecretNameOrPrefix— Der Name oder das Präfix einer Reihe von Namen in Secrets Manager, auf die diese Funktion Zugriff hat (zum Beispielvertica-*)

  • VerticaConnectionString— Die Vertica-Verbindungsdetails, die standardmäßig verwendet werden sollen, wenn keine katalogspezifische Verbindung definiert ist. Die Zeichenfolge kann optional AWS Secrets Manager Syntax verwenden (z. B.${secret_name}).

  • VPC ID – Die VPC-ID, die an die Lambda-Funktion angehängt werden soll.

Verbindungszeichenfolge

Verwenden Sie eine JDBC-Verbindungszeichenfolge im folgenden Format, um eine Verbindung zu einer Datenbank-Instance herzustellen.

vertica://jdbc:vertica://host_name:port/database?user=vertica-username&password=vertica-password

Verwenden eines einzelnen Verbindungs-Handlers

Sie können die folgenden Einzelverbindungsmetadaten und Record Handler verwenden, um eine Verbindung zu einer einzelnen Vertica-Instance herzustellen.

Handler-Typ Klasse
Composite Handler VerticaCompositeHandler
Metadaten-Handler VerticaMetadataHandler
Record Handler VerticaRecordHandler

Parameter für Einzelverbindungs-Handler

Parameter Beschreibung
default Erforderlich Die standardmäßige Verbindungszeichenfolge.

Die Einzelverbindungs-Handler unterstützen eine Datenbank-Instance und müssen einen default-Verbindungszeichenfolgenparameter bereitstellen. Alle anderen Verbindungszeichenfolgen werden ignoriert.

Bereitstellen von Anmeldeinformationen

Um einen Benutzernamen und ein Kennwort für Ihre Datenbank in Ihrer JDBC-Verbindungszeichenfolge anzugeben, können Sie Eigenschaften von Verbindungszeichenfolgen oder AWS Secrets Manager verwenden.

  • Verbindungszeichenfolge – Ein Benutzername und ein Kennwort können als Eigenschaften in der JDBC-Verbindungszeichenfolge angegeben werden.

    Wichtig

    Als bewährte Sicherheitsmethode sollten Sie keine fest kodierten Anmeldeinformationen in Ihren Umgebungsvariablen oder Verbindungszeichenfolgen verwenden. Informationen zum Verschieben von hartcodierten Geheimnissen nach AWS Secrets Manager finden Sie AWS Secrets Manager im AWS Secrets Manager Benutzerhandbuch unter Verschieben von hartcodierten Geheimnissen nach.

  • AWS Secrets Manager— Um die Athena Federated Query-Funktion verwenden zu können AWS Secrets Manager, muss die mit Ihrer Lambda-Funktion verbundene VPC über Internetzugang oder einen VPC-Endpunkt verfügen, um eine Verbindung zu Secrets Manager herzustellen.

    Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre JDBC-Verbindungszeichenfolge eingeben. Der Konnektor ersetzt den geheimen Namen durch username- und password-Werte von Secrets Manager.

    Für Amazon RDS-Datenbank-Instances ist diese Unterstützung eng integriert. Wenn Sie Amazon RDS verwenden, empfehlen wir dringend, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . Wenn Ihre Datenbank Amazon RDS nicht verwendet, speichern Sie die Anmeldeinformationen als JSON im folgenden Format:

    {"username": "${username}", "password": "${password}"}
Beispiel für eine Verbindungszeichenfolge mit geheimen Namen

Die folgende Zeichenfolge hat die geheimen Namen ${vertica-username} und ${vertica-password}.

vertica://jdbc:vertica://host_name:port/database?user=${vertica-username}&password=${vertica-password}

Der Konnektor verwendet den geheimen Namen, um Secrets abzurufen und den Benutzernamen und das Kennwort bereitzustellen, wie im folgenden Beispiel gezeigt.

vertica://jdbc:vertica://host_name:port/database?user=sample-user&password=sample-password

Derzeit erkennt der Vertica-Konnektor die vertica-username- und vertica-password-JDBC-Eigenschaften.

Überlauf-Parameter

Das Lambda-SDK kann Daten an Amazon S3 übertragen. Alle Datenbank-Instances, auf die mit derselben Lambda-Funktion zugegriffen wird, werden an denselben Speicherort verschoben.

Parameter Beschreibung
spill_bucket Erforderlich Überlauf-Bucket-Name.
spill_prefix Erforderlich Schlüssel-Prefix für den Überlauf-Bucket.
spill_put_request_headers (Optional) Eine JSON-codierte Zuordnung von Anforderungsheadern und Werten für die Amazon-S3-putObject-Anforderung, die für den Überlauf verwendet wird (z. B. {"x-amz-server-side-encryption" : "AES256"}). Weitere mögliche Header finden Sie PutObjectin der Amazon Simple Storage Service API-Referenz.

Datentypunterstützung

In der folgenden Tabelle sind die unterstützten Datentypen für den Vertica-Konnektor aufgeführt.

Boolesch
BigInt
Short
Ganzzahl
Long
Gleitkommazahl
Double
Datum
Varchar
Bytes
BigDecimal
TimeStamp als Varchar

Leistung

Die Lambda-Funktion führt Projektions-Pushdown durch, um die von der Abfrage gescannten Daten zu reduzieren. LIMIT-Klauseln reduzieren die Menge der gescannten Daten, aber wenn Sie kein Prädikat angeben, sollten Sie davon ausgehen, dass SELECT-Abfragen mit einer LIMIT-Klausel mindestens 16 MB Daten scannen. Der Vertica-Konnektor ist aufgrund der Gleichzeitigkeit widerstandsfähig gegenüber Drosselung.

Passthrough-Abfragen

Der Vertica-Connector unterstützt Passthrough-Abfragen. Passthrough-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Passthrough-Abfragen mit Vertica zu verwenden, können Sie die folgende Syntax verwenden:

SELECT * FROM TABLE( system.query( query => 'query string' ))

Mit der folgenden Beispielabfrage wird eine Abfrage an eine Datenquelle in Vertica weitergeleitet. Die Abfrage wählt alle Spalten in der customer Tabelle aus, wodurch die Ergebnisse auf 10 begrenzt werden.

SELECT * FROM TABLE( system.query( query => 'SELECT * FROM customer LIMIT 10' ))

Lizenzinformationen

Durch die Verwendung dieses Connectors erkennen Sie die Einbindung von Komponenten von Drittanbietern an. Eine Liste dieser Komponenten finden Sie in der Datei pom.xml für diesen Connector und stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei LICENSE.txt auf GitHub .com enthalten sind.

Weitere Ressourcen

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei pom.xml für den Vertica-Connector auf .com. GitHub

Weitere Informationen zu diesem Connector finden Sie auf der entsprechenden Website auf GitHub .com und Abfragen einer Vertica-Datenquelle in Amazon Athena mit dem Athena Federated Query SDK im Big Data Blog.AWS