BigQuery-Verbindungen - AWS Glue

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.

BigQuery-Verbindungen

Sie können AWS Glue für Spark zum Lesen und Schreiben in Tabellen in Google BigQuery in AWS 4.0 und späteren Versionen verwenden. Sie können mit einer Google-SQL-Abfrage in BigQuery lesen. Sie stellen mithilfe von Anmeldeinformationen, die über eine AWS Glue-Verbindung in AWS Secrets Manager gespeichert sind, eine Verbindung zu BigQuery her.

Weitere Informationen zu Google BigQuery finden Sie auf der Website für Google Cloud BigQuery.

Konfigurieren von BigQuery-Verbindungen

Um von AWS Glue aus eine Verbindung zu Google BigQuery herzustellen, müssen Sie Ihre Anmeldeinformationen für die Google Cloud Platform erstellen und in einem AWS Secrets Manager-Secret speichern und dieses Secret dann mit einer Google BigQuery AWS Glue-Verbindung verknüpfen.

So konfigurieren Sie eine Verbindung zu BigQuery:
  1. Erstellen und identifizieren Sie in der Google Cloud Platform relevante Ressourcen:

  2. Erstellen und exportieren Sie in Google Cloud Platform Anmeldeinformationen für ein Dienstkonto:

    Sie können den Assistenten für Anmeldedaten in BigQuery verwenden, um diesen Schritt zu beschleunigen: Anmeldeinformationen erstellen.

    Folgen Sie der Anleitung unter Dienstkonten erstellen, um ein Dienstkonto in GCP zu erstellen.

    • Wählen Sie bei der Auswahl eines Projekts das Projekt aus, das Ihre BigQuery-Tabelle enthält.

    • Wenn Sie GCP-IAM-Rollen für Ihr Dienstkonto auswählen, erstellen oder fügen Sie eine Rolle hinzu, die entsprechende Berechtigungen zum Ausführen von BigQuery-Aufträgen zum Lesen, Schreiben oder Erstellen von BigQuery-Tabellen gewährt.

    Folgen Sie der Anleitung unter Einen Dienstkontoschlüssel erstellen, um Anmeldeinformationen für Ihr Dienstkonto zu erstellen.

    • Wählen Sie für den Schlüsseltyp JSON aus.

    Sie sollten jetzt eine JSON-Datei mit Anmeldeinformationen für Ihr Dienstkonto heruntergeladen haben. Das sollte bei Ihnen ähnlich wie im folgenden Bild aussehen:

    { "type": "service_account", "project_id": "*****", "private_key_id": "*****", "private_key": "*****", "client_email": "*****", "client_id": "*****", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "*****", "universe_domain": "googleapis.com" }
  3. base64-kodieren Sie die heruntergeladene Datei mit den Anmeldeinformationen. In einer AWS CloudShell-Sitzung oder ähnlichem können Sie dies durch Ausführen von cat credentialsFile.json | base64 -w 0 von der Befehlszeile aus tun. Behalten Sie die Ausgabe dieses Befehls, credentialString, bei.

  4. Erstellen Sie in AWS Secrets Manager mithilfe Ihrer Anmeldeinformationen für Google Cloud Platform ein Secret. Um ein Geheimnis im Secrets Manager zu erstellen, befolgen Sie das Tutorial unter Erstellen eines AWS Secrets Manager-Secrets in der AWS Secrets Manager-Dokumentation. Behalten Sie nach dem Erstellen des Secrets den Namen des Secrets, secretName für den nächsten Schritt bei.

    • Erstellen Sie bei der Auswahl von Schlüssel/Wert-Paaren ein Paar für den Schlüssel credentials mit dem Wert credentialString.

  5. Erstellen Sie im AWS Glue Data Catalog eine Verbindung, indem Sie die Schritte in Hinzufügen einer AWS Glue-Verbindung befolgen. Behalten Sie nach dem Erstellen der Verbindung den Verbindungsnamen connectionName für den nächsten Schritt bei.

    • Wählen Sie für den Verbindungstyp Google BigQuery aus.

    • Geben Sie bei der Auswahl eines AWS-Secrets die Option secretName an.

  6. Erteilen Sie der mit Ihrem AWS Glue-Auftrag verknüpften IAM-Rolle die Berechtigung, secretName zu lesen.

  7. Geben Sie in Ihrer AWS-Glue-Auftragskonfiguration connectionName als zusätzliche Netzwerkverbindung an.

Lesen aus BigQuery-Tabellen

Voraussetzungen:

  • Eine BigQuery-Tabelle, aus der gelesen werden soll. Sie benötigen die Namen der BigQuery-Tabelle und Datensätze im Format [dataset].[table]. Wir nennen sie tableName.

  • Das Fakturierungsprojekt für die BigQuery-Tabelle. Sie benötigen den Namen des Projekts, parentProject. Wenn es kein übergeordnetes Fakturierungsprojekt gibt, verwenden Sie das Projekt, das die Tabelle enthält.

  • BigQuery-Authentifizierungsinformationen. Gehen Sie gemäß der Schritte in So verwalten Sie Ihre Anmeldeinformationen für die Verbindung mit AWS Glue vor, um Ihre Authentifizierungsinformationen zu konfigurieren. Sie benötigen den Namen der AWS-Glue-Verbindung, connectionName.

Beispiele:

bigquery_read = glueContext.create_dynamic_frame.from_options( connection_type="bigquery", connection_options={ "connectionName": "connectionName", "parentProject": "parentProject", "sourceType": "table", "table": "tableName", }

Sie können auch eine Abfrage angeben, um die an Ihren DynamicFrame zurückgegebenen Ergebnisse zu filtern. Sie müssen query, sourceType, viewsEnabled und materializationDataset konfigurieren.

Beispiele:

Zusätzliche Voraussetzungen:

Sie müssen einen BigQuery-Datensatz, materializationDataset, erstellen oder identifizieren, in dem BigQuery materialisierte Ansichten für Ihre Abfragen schreiben kann.

Sie müssen Ihrem Dienstkonto die entsprechenden GCP-IAM-Berechtigungen gewähren, um in materializationDataset Tabellen erstellen zu können.

glueContext.create_dynamic_frame.from_options( connection_type="bigquery", connection_options={ "connectionName": "connectionName", "materializationDataset": materializationDataset, "parentProject": "parentProject", "viewsEnabled": "true", "sourceType": "query", "query": "select * from bqtest.test" } )

Schreiben in BigQuery-Tabellen

In diesem Beispiel wird direkt in den BigQuery-Dienst geschrieben. BigQuery unterstützt auch die „indirekte“ Schreibmethode. Weitere Informationen zur Konfiguration indirekter Schreibvorgänge finden Sie unter Verwenden von indirektem Schreiben in Google BigQuery.

Voraussetzungen:

  • Eine BigQuery-Tabelle, in die geschrieben werden soll. Sie benötigen die Namen der BigQuery-Tabelle und Datensätze im Format [dataset].[table]. Sie können auch einen neuen Tabellennamen angeben, der automatisch erstellt wird. Wir nennen sie tableName.

  • Das Fakturierungsprojekt für die BigQuery-Tabelle. Sie benötigen den Namen des Projekts, parentProject. Wenn es kein übergeordnetes Fakturierungsprojekt gibt, verwenden Sie das Projekt, das die Tabelle enthält.

  • BigQuery-Authentifizierungsinformationen. Gehen Sie gemäß der Schritte in So verwalten Sie Ihre Anmeldeinformationen für die Verbindung mit AWS Glue vor, um Ihre Authentifizierungsinformationen zu konfigurieren. Sie benötigen den Namen der AWS-Glue-Verbindung, connectionName.

Beispiele:

bigquery_write = glueContext.write_dynamic_frame.from_options( frame=frameToWrite, connection_type="bigquery", connection_options={ "connectionName": "connectionName", "parentProject": "parentProject", "writeMethod": "direct", "table": "tableName", } )

Referenz zur BigQuery-Verbindungsoption

  • project – Standard: Standard für das Google Cloud-Dienstkonto. Wird für Lesen/Schreiben verwendet. Der Name eines Google Cloud-Projekts, das mit Ihrer Tabelle verknüpft ist.

  • table – (Erforderlich) Wird zum Lesen/Schreiben verwendet. Der Name Ihrer BigQuery-Tabelle im Format [[project:]dataset.].

  • dataset – Erforderlich, wenn nicht über die Option table definiert. Wird für Lesen/Schreiben verwendet. Der Name des Datensatzes, der Ihre BigQuery-Tabelle enthält.

  • parentProject – Standard: Standard für das Google Cloud-Dienstkonto. Wird für Lesen/Schreiben verwendet. Der Name eines Google Cloud-Projekts, das mit project verknüpft ist und für die Fakturierung verwendet wird.

  • sourceType – Wird zum Lesen verwendet. Beim Lesen erforderlich. Gültige Werte: table, query Informiert AWS Glue darüber, ob Sie nach Tabelle oder nach Abfrage lesen werden.

  • materializationDataset – Wird zum Lesen verwendet. Gültige Werte: Zeichenfolgen. Der Name eines BigQuery-Datensatzes, das zum Speichern von Materialisierungen für Ansichten verwendet wird.

  • viewsEnabled – Wird zum Lesen verwendet. Standard: falsch. Zulässige Werte: true, false. Konfiguriert, ob BigQuery Ansichten verwendet.

  • query – Wird zum Lesen verwendet. Wird verwendet, wenn viewsEnabled „true“ ist. Eine GoogleSQL-DQL-Abfrage.

  • temporaryGcsBucket – Wird zum Schreiben verwendet. Erforderlich, wenn writeMethod auf Standard (indirect) eingestellt ist. Name eines Google Cloud Storage-Buckets, der zum Speichern einer Zwischenform Ihrer Daten beim Schreiben in BigQuery verwendet wird.

  • writeMethod – Standardwert: indirect. Zulässige Werte: direct, indirect. Wird zum Schreiben verwendet. Gibt die Methode an, mit der Ihre Daten geschrieben werden.

    • Wenn direct festgelegt ist, schreibt Ihr Connector mithilfe der BigQuery Storage Write API.

    • Wenn indirect festgelegt ist, schreibt Ihr Connector in Google Cloud Storage und überträgt dann mithilfe eines Ladevorgangs an BigQuery. Ihr Google Cloud-Dienstkonto benötigt entsprechende GCS-Berechtigungen.

Verwenden von indirektem Schreiben in Google BigQuery

In diesem Beispiel wird indirektes Schreiben verwendet, bei dem Daten in Google Cloud Storage geschrieben und zu Google BigQuery kopiert werden.

Voraussetzungen:

Sie benötigen einen temporären Google Cloud Storage-Bucket, temporaryBucket.

Die GCP-IAM-Rolle für das GCP-Dienstkonto von AWS Glue benötigt die entsprechenden GCS-Berechtigungen, um auf temporaryBucket zugreifen zu können.

Zusätzliche Konfiguration:

So konfigurieren Sie indirektes Schreiben in BigQuery:
  1. Bewerten Sie Konfigurieren von BigQuery-Verbindungen und suchen oder laden Sie die JSON-Datei mit Ihren GCP-Anmeldeinformationen erneut herunter. Identifizieren Sie secretName, das AWS Secrets Manager-Secret für die Google BigQuery AWS Glue-Verbindung, die in Ihrem Auftrag verwendet wird.

  2. Laden Sie die JSON-Datei mit Ihren Anmeldeinformationen an einem entsprechend sicheren Amazon-S3-Speicherort hoch. Behalten Sie den Pfad zur Datei, s3secretpath, für kommende Schritte bei.

  3. Bearbeiten Sie secretName durch Hinzufügen des spark.hadoop.google.cloud.auth.service.account.json.keyfile-Schlüssels. Setzen Sie den Wert auf s3secretpath.

  4. Erteilen Sie Ihrem AWS Glue-Auftrag Amazon S3 IAM-Berechtigungen für den Zugriff auf s3secretpath.

Sie können jetzt den Speicherort Ihres temporären GCS-Bucket für Ihre Schreibmethode angeben. Sie müssen writeMethod nicht angeben, da indirect üblicherweise die Standardeinstellung ist.

bigquery_write = glueContext.write_dynamic_frame.from_options( frame=frameToWrite, connection_type="bigquery", connection_options={ "connectionName": "connectionName", "parentProject": "parentProject", "temporaryGcsBucket": "temporaryBucket", "table": "tableName", } )