Amazon Athena Redshift 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 Redshift Konnektor

Der Amazon Athena Redshift-Connector ermöglicht Amazon Athena den Zugriff auf Ihre Amazon Redshift- und Amazon Redshift Serverless-Datenbanken, einschließlich Redshift Serverless-Ansichten. Sie können mithilfe der auf dieser Seite beschriebenen Konfigurationseinstellungen für die JDBC-Verbindungszeichenfolge eine Verbindung zu beiden Diensten herstellen.

Voraussetzungen

Einschränkungen

  • Schreiboperationen wie DDL werden nicht unterstützt.

  • In einem Multiplexer-Setup werden der Überlauf-Bucket und das Präfix von allen Datenbank-Instances gemeinsam genutzt.

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

  • Da Redshift keine externen Partitionen unterstützt, werden alle in einer Abfrage angegebenen Daten jedes Mal abgerufen.

Bedingungen

Die folgenden Begriffe beziehen sich auf den Redshift-Konnektor.

  • Datenbank-Instance – Jede Instance einer Datenbank, die On-Premises, in Amazon EC2 oder auf Amazon RDS 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.

  • Multiplex-Handler – Ein Lambda-Handler, der mehrere Datenbankverbindungen akzeptieren und verwenden kann.

Parameter

Verwenden Sie die Lambda-Umgebungsvariablen in diesem Abschnitt, um den Redshift-Konnektor zu konfigurieren.

Verbindungszeichenfolge

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

redshift://${jdbc_connection_string}

Verwenden eines Multiplexing-Handlers

Sie können einen Multiplexer verwenden, um mit einer einzigen Lambda-Funktion eine Verbindung zu mehreren Datenbank-Instances herzustellen. Anfragen werden anhand des Katalognamens weitergeleitet. Verwenden Sie die folgenden Klassen in Lambda.

Handler Klasse
Composite Handler RedshiftMuxCompositeHandler
Metadaten-Handler RedshiftMuxMetadataHandler
Record Handler RedshiftMuxRecordHandler

Multiplex-Handler-Parameter

Parameter Beschreibung
$catalog_connection_string Erforderlich Eine Verbindungszeichenfolge einer Datenbank-Instance. Stellen Sie der Umgebungsvariablen den Namen des in Athena verwendeten Katalogs voran. Wenn zum Beispiel der bei Athena registrierte Katalog myredshiftcatalog ist, dann lautet der Name der Umgebungsvariablen myredshiftcatalog_connection_string.
default Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der Katalog lambda:${AWS_LAMBDA_FUNCTION_NAME} ist.

Die folgenden Beispieleigenschaften gelten für eine Redshift MUX Lambda-Funktion, die zwei Datenbankinstanzen unterstützt: redshift1 (die Standardeinstellung) und redshift2.

Eigenschaft Wert
default redshift://jdbc:redshift://redshift1.host:5439/dev?user=sample2&password=sample2
redshift_catalog1_connection_string redshift://jdbc:redshift://redshift1.host:3306/default?${Test/RDS/Redshift1}
redshift_catalog2_connection_string redshift://jdbc:redshift://redshift2.host:3333/default?user=sample2&password=sample2

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 finden Sie im AWS Secrets Manager Benutzerhandbuch unter Verschieben von hartcodierten AWS Secrets Manager Geheimnissen nach.AWS Secrets Manager

  • 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 einer Verbindungszeichenfolge mit einem Secret-Namen

Die folgende Zeichenfolge hat den Secret-Namen ${Test/RDS/ Redshift1}.

redshift://jdbc:redshift://redshift1.host:3306/default?...&${Test/RDS/Redshift1}&...

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

redshift://jdbc:redshift://redshift1.host:3306/default?...&user=sample2&password=sample2&...

Derzeit erkennt der Redshift-Konnektor die user- und 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

Die folgende Tabelle zeigt die entsprechenden Datentypen für JDBC und Apache Arrow.

JDBC Arrow
Boolesch Bit
Ganzzahl Tiny
Short Smallint
Ganzzahl Int
Long Bigint
float Float4
Double Float8
Datum DateDay
Zeitstempel DateMilli
String Varchar
Bytes Varbinary
BigDecimal Dezimal
ARRAY Auflisten

Partitionen und Splits

Redshift unterstützt keine externen Partitionen. Informationen zur leistungsbezogenen Problemen finden Sie unter Leistung.

Leistung

Der Athena-Redshift-Konnektor führt einen Prädikat-Pushdown durch, um die Anzahl der von der Abfrage gescannten Daten zu reduzieren. LIMIT-Klauseln, ORDER BY-Klauseln, einfache Prädikate und komplexe Ausdrücke werden an den Konnektor übertragen, um die Menge der gescannten Daten zu reduzieren und die Laufzeit der Abfrage zu verkürzen. Die Auswahl einer Teilmenge von Spalten führt jedoch manchmal zu einer längeren Laufzeit der Abfrageausführung. Amazon Redshift ist besonders anfällig für eine Verlangsamung der Abfrageausführung, wenn Sie mehrere Abfragen gleichzeitig ausführen.

LIMIT-Klauseln

Eine LIMIT N-Anweisung reduziert die von der Abfrage durchsuchten Daten. Mit LIMIT N-Pushdown gibt der Konnektor nur N Zeilen an Athena zurück.

Top-N-Abfragen

Eine Top-N-Abfrage gibt eine Reihenfolge der Ergebnismenge und eine Obergrenze für die Anzahl der zurückgegebenen Zeilen an. Sie können diesen Abfragetyp verwenden, um die höchsten N-Höchstwerte oder die höchsten N-Minimalwerte für Ihre Datensätze zu ermitteln. Mit N-Pushdown gibt der Konnektor nur N-geordnete Zeilen an Athena zurück.

Prädikate

Ein Prädikat ist ein Ausdruck in der WHERE-Klausel einer SQL-Abfrage, der einen booleschen Wert ergibt und Zeilen auf der Grundlage mehrerer Bedingungen filtert. Der Athena-Redshift-Konnektor kann diese Ausdrücke kombinieren und sie direkt an Redshift weiterleiten, um die Funktionalität zu erweitern und die Menge der gescannten Daten zu reduzieren.

Die folgenden Athena-Redshift-Konnektor-Operatoren unterstützen Prädikat-Pushdown:

  • Boolean: UND, ODER, NICHT

  • Gleichheit: GLEICH, NICHT-GLEICH, WENIGER_ALS, WENIGER_ODER-GLEICH, GRÖSSER_ALS, GRÖSSER_ODER-GLEICH, IST_UNTERSCHIEDEN VON, NULL_WENN, IST_NULL

  • Arithmetik: ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, MODULIEREN, NEGIEREN

  • Andere: WIE_MUSTER, IN

Beispiel für einen kombinierten Pushdown

Kombinieren Sie für erweiterte Abfragefunktionen die Pushdown-Typen wie im folgenden Beispiel:

SELECT * FROM my_table WHERE col_a > 10 AND ((col_a + col_b) > (col_c % col_d)) AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') ORDER BY col_a DESC LIMIT 10;

Einen Artikel über die Verwendung von Prädikat-Pushdown zur Verbesserung der Leistung bei Verbundabfragen, einschließlich Amazon Redshift, finden Sie unter Verbessern von Verbundabfragen mit Prädikat-Pushdown in Amazon Athena im AWS -Big-Data-Blog.

Passthrough-Abfragen

Der Redshift-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 Redshift 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 Redshift 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' ))

Weitere Ressourcen

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

Weitere Informationen zu diesem Connector finden Sie auf der entsprechenden Website unter .com. GitHub