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
Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Weitere Informationen finden Sie unter Stellen Sie einen Datenquellenconnector bereit oder Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen.
Richten Sie eine Sicherheitsgruppe VPC und eine Sicherheitsgruppe ein, bevor Sie diesen Connector verwenden. Weitere Informationen finden Sie unter Erstellen Sie einen Konnektor VPC für eine Datenquelle.
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 die Verwendung eines CREATETABLEAS (SELECT...) Abfrage und SQL Prädikate.
-
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.
-
DDLSchreiboperationen 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.
-
Eine SQL Abfrage wird für eine oder mehrere Tabellen in Vertica ausgegeben.
-
Der Konnektor analysiert die SQL Abfrage, um den entsprechenden Teil über die Verbindung an Vertica zu senden. JDBC
-
Die Verbindungszeichenfolgen verwenden den Benutzernamen und das Passwort, die für AWS Secrets Manager den Zugriff auf Vertica gespeichert sind.
-
Der Connector umschließt die SQL Abfrage mit einem
EXPORT
Vertica-Befehl, wie im folgenden Beispiel.EXPORT TO PARQUET (directory = 's3://amzn-s3-demo-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; -
Vertica verarbeitet die SQL Abfrage und sendet die Ergebnismenge an einen Amazon S3 S3-Bucket. Für einen besseren Durchsatz verwendet Vertica die
EXPORT
-Option, um den Schreibvorgang mehrerer Parquet-Dateien zu parallelisieren. -
Athena durchsucht den Amazon-S3-Bucket, um die Anzahl der Dateien zu ermitteln, die für die Ergebnismenge gelesen werden sollen.
-
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.
-
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 mehrereIDs, die der Sicherheitsgruppe entsprechen, die auf die Lambda-Funktion angewendet werden soll (z. B.,
sg1
sg2
, odersg3
). -
SubnetIds— Ein oder mehrere SubnetzeIDs, 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 Beispiel
vertica-*
) -
VerticaConnectionString— Die standardmäßig zu verwendenden Vertica-Verbindungsdetails, wenn keine katalogspezifische Verbindung definiert ist. Die Zeichenfolge kann optional AWS Secrets Manager Syntax verwenden (z. B.
${secret_name}
). -
VPCID — 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 Datenbankinstanz 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 Passwort für Ihre Datenbank in Ihrer JDBC Verbindungszeichenfolge anzugeben, können Sie die Eigenschaften der Verbindungszeichenfolge oder verwenden AWS Secrets Manager.
-
Verbindungszeichenfolge — Ein Benutzername und ein Passwort 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 Ihrem Lambda VPC verbundene Funktion über einen Internetzugang
oder einen VPCEndpunkt verfügen, über den Sie sich mit Secrets Manager verbinden können. Sie können den Namen eines Geheimnisses AWS Secrets Manager in Ihre JDBC Verbindungszeichenfolge eingeben. Der Konnektor ersetzt den geheimen Namen durch
username
- undpassword
-Werte von Secrets Manager.Für RDS Amazon-Datenbank-Instances ist diese Unterstützung eng integriert. Wenn Sie Amazon verwendenRDS, empfehlen wir dringend, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . Wenn Ihre Datenbank Amazon nicht verwendetRDS, speichern Sie die Anmeldeinformationen 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-password
JDBC Eigenschaften vertica-username
und.
Überlauf-Parameter
Das Lambda SDK kann Daten an Amazon S3 weitergeben. 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 kodierte Zuordnung von Anforderungsheadern und Werten für die Amazon S3 putObject S3-Anfrage, die zum Verschicken verwendet wird (z. B.). {"x-amz-server-side-encryption" :
"AES256"} Weitere mögliche Header finden Sie PutObjectin der Amazon Simple Storage Service API Reference. |
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 und begrenzt die Ergebnisse auf 10.
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
Weitere Ressourcen
Die neuesten Informationen zur JDBC Treiberversion finden Sie in der Datei pom.xml
Weitere Informationen zu diesem Konnektor finden Sie auf der entsprechenden Website