Amazon Athena Google BigQuery Konnektor
Der Amazon-Athena-Konnektor für Google BigQuery
Dieser Connector kann bei Glue-Datenkatalog als Verbundkatalog registriert werden. Er unterstützt in Lake Formation definierte Datenzugriffskontrollen auf Katalog-, Datenbank-, Tabellen-, Spalten-, Zeilen- und Tagebene. Dieser Konnektor verwendet Glue Connections, um die Konfigurationseigenschaften in Glue zu zentralisieren.
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 Eine Datenquellenverbindung erstellen oder Verwenden Sie AWS Serverless Application Repository, um einen Datenquellen-Konnektor bereitzustellen.
Einschränkungen
-
Lambda-Funktionen haben einen maximalen Timeout-Wert von 15 Minuten. Jeder Split führt eine Abfrage auf BigQuery aus und muss mit genügend Zeit abgeschlossen werden, um die Ergebnisse zu speichern, damit Athena sie lesen kann. Wenn bei der Lambda-Funktion eine Zeitüberschreitung auftritt, schlägt die Abfrage fehl.
-
Die Google BigQuery berücksichtigt Groß- und Kleinschreibung. Der Konnektor versucht, die Groß- und Kleinschreibung von Datensatznamen, Tabellennamen und Projekt-IDs zu korrigieren. Dies ist notwendig, da Athena alle Metadaten in Kleinbuchstaben schreibt. Diese Korrekturen führen zu vielen zusätzlichen Aufrufen bei Google BigQuery.
-
Der Datentyp BINARY wird nicht unterstützt.
-
Aufgrund der Parallelität und der Kontingentbeschränkungen von Google BigQuery kann der Konnektor Probleme mit der Google-Kontingentbegrenz vorfinden. Um diese Probleme zu vermeiden, setzen Sie so viele Einschränkungen wie möglich auf Google BigQuery. Weitere Informationen zu BigQuery-Kontingenten finden Sie unter Kontingente und -Einschränkungen
in der Google BigQuery-Dokumentation.
Parameter
Verwenden Sie die Parameter in diesem Abschnitt, um den Google BigQuery-Konnektor zu konfigurieren.
Wir empfehlen, dass Sie einen Google BigQuery-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die glue_connection Umgebungsvariable des Google BigQuery-Konnektors Lambda auf den Namen der zu verwendenden Glue-Connection.
Eigenschaften von Glue Connections
Verwenden Sie den folgenden Befehl, um das Schema für ein Glue-Connection-Objekt zu erhalten. Dieses Schema enthält alle Parameter, mit denen Sie Ihre Verbindung steuern können.
aws glue describe-connection-type --connection-type BIGQUERY
Lambda-Umgebungseigenschaften
glue_connection – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist.
Anmerkung
-
Alle Konnektoren, die Glue Connections verwenden, müssen AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
-
Der mit Glue-Connection erstellte Google BigQuery-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
-
Der mit Glue-Connection erstellte Google BigQuery-Connector unterstützt nur
ConnectionSchemaVersion2.
Anmerkung
Athena-Datenquellenkonnektoren, die am 3. Dezember 2024 und später erstellt wurden, verwenden AWS Glue-Verbindungen.
Die unten aufgeführten Parameternamen und Definitionen beziehen sich auf Athena-Datenquellenkonnektoren, die ohne eine zugehörige Glue-Connection erstellt wurden. Verwenden Sie die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellenkonnektors manuell bereitstellen oder wenn die glue_connection-Umgebungseigenschaft nicht angegeben ist.
Lambda-Umgebungseigenschaften
-
spill_bucket – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
-
spill_prefix – (Optional) Ist standardmäßig ein Unterordner im angegebenen
spill_bucketgenanntathena-federation-spill. Wir empfehlen Ihnen, einen Amazon-S3-Speicher-Lebenszyklus an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind. -
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"}). Andere mögliche Header finden Sie unter PutObject in der API-Referenz zu Amazon Simple Storage Service. -
kms_key_id – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet werden, mit dem AES-GCM-authentifizierten Verschlüsselungsmodus und einem zufällig generierten Schlüssel verschlüsselt. Damit Ihre Lambda-Funktion stärkere Verschlüsselungsschlüssel verwendet, die von KMS generiert werden, wie
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331, können Sie eine ID einer Verschlüsselung angeben. -
disable_spill_encryption – (Optional) Bei Einstellung auf
True, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung istFalse, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine serverseitige Verschlüsselung verwendet. -
gcp_projekt_id – Die Projekt-ID (nicht der Projektname), die die Datensätze enthält, aus denen der Konnektor lesen soll (z. B.
semiotic-primer-1234567). -
secret_manager_gcp_creds_name – Der Name des Secrets in AWS Secrets Manager, das Ihre BigQuery-Anmeldeinformationen im JSON-Format enthält (z. B.
GoogleCloudPlatformCredentials). -
big_query_endpoint – (Optional) Die URL eines privaten BigQuery-Endpunkts. Verwenden Sie diesen Parameter, wenn Sie über einen privaten Endpunkt auf BigQuery zugreifen möchten.
Teilungen und Ansichten
Da der BigQuery-Connector die API BigQuery Storage Read zum Abfragen von Tabellen verwendet und die API BigQuery Storage keine Ansichten unterstützt, verwendet der Connector den BigQuery-Client mit einer einzigen Aufteilung für Ansichten.
Leistung
Um Tabellen abzufragen, verwendet der BigQuery-Connector die API BigQuery Storage Read, die ein RPC-basiertes Protokoll verwendet, das schnellen Zugriff auf von BigQuery verwalteten Speicher ermöglicht. Weitere Informationen zur API BigQuery Storage Read finden Sie in der Google-Cloud-Dokumentation unter Verwenden der API BigQuery Storage Read zum Lesen von Tabellendaten
Die Auswahl einer Teilmenge von Spalten beschleunigt die Abfragelaufzeit erheblich und reduziert die gescannten Daten. Der Konnektor ist mit zunehmender Parallelität Abfragefehlern ausgesetzt und in der Regel ein langsamer Konnektor.
Der Athena-Google-BigQuery-Konnektor führt einen Prädikat-Pushdown durch, um die von der Abfrage durchsuchten Daten zu verringern. 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 Abfrageausführung zu verkürzen.
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-Google-BigQuery-Konnektor kann diese Ausdrücke kombinieren und sie direkt an Google BigQuery weiterleiten, um die Funktionalität zu verbessern und die Menge der gescannten Daten zu reduzieren.
Die folgenden Operatoren für den Google-BigQuery-Konnektor von Athena unterstützen den Prädikats-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;
Pass-Through-Abfragen
Der Google BigQuery-Connector unterstützt Pass-Through-Abfragen. Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.
Um Pass-Through-Abfragen mit Google BigQuery 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 Google BigQuery 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
Das Amazon-Athena-Google-BigQuery-Konnektor-Projekt ist lizenziert unter Apache-2.0-Lizenz
Durch die Verwendung dieses Konnektors erkennen Sie die Aufnahme von Komponenten von Drittanbietern an. Eine Liste dieser Komponenten finden Sie in der pom.xml
Weitere Ressourcen
Weitere Informationen zu diesem Konnektor finden Sie unter der entsprechenden Seite