Mit einem BigQuery-Senken-Connector können Sie Daten aus Managed Service for Apache Kafka in Echtzeit in BigQuery-Tabellen streamen. Mit diesem Connector können Sie Streamingdaten in BigQuery für Data-Warehouse-Prozesse, analytische Berichte und Echtzeit-Dashboards aufnehmen.
Hinweis
Bevor Sie einen BigQuery-Senken-Connector erstellen, benötigen Sie Folgendes:
Erstellen Sie einen Managed Service for Apache Kafka-Cluster für Ihren Connect-Cluster. Dieser Cluster ist der primäre Kafka-Cluster, der mit dem Connect-Cluster verknüpft ist. Dieser Cluster ist auch der Quellcluster, der ein Ende der BigQuery-Senken-Connector-Pipeline bildet.
Erstellen Sie einen Connect-Cluster, um Ihren BigQuery-Senken-Connector zu hosten.
Erstellen Sie ein BigQuery-Dataset zum Speichern der von Kafka gestreamten Daten.
Erstellen und konfigurieren Sie ein Kafka-Thema im Quellcluster. Daten werden von diesem Kafka-Thema in das BigQuery-Ziel-Dataset verschoben.
Erforderliche Rollen und Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Managed Kafka Connector Editor (roles/managedkafka.connectorEditor) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Connectors benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Erstellen eines Connectors erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind zum Erstellen eines Connectors erforderlich:
-
Connector erstellen:
managedkafka.connectors.create
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Berechtigungen zum Schreiben in die BigQuery-Tabelle gewähren
Der Managed Kafka-Dienst-Agent muss die Berechtigung haben, Nachrichten in die BigQuery-Tabelle zu schreiben.
Weisen Sie dem Dienst-Agent die Rolle „BigQuery-Datenbearbeiter“ (roles/bigquery.dataEditor) für das Projekt zu, das die Tabelle enthält.
Wenn sich Ihr Connect-Cluster in einem anderen Projekt als Ihr Managed Service for Apache Kafka-Cluster befindet, lesen Sie den Abschnitt Connect-Cluster in einem anderen Projekt erstellen.
Wichtige Konfigurationsparameter
Im Folgenden finden Sie Empfehlungen für Konfigurationen für den BigQuery-Senken-Connector.
Warteschlangengröße
Mit der Einstellung queueSize wird die maximale Anzahl von Schreibanfragen an BigQuery gesteuert. Standardmäßig ist dieser Wert nicht konfiguriert, was zu Fehlern aufgrund von unzureichendem Arbeitsspeicher im Connect-Cluster führen kann. Wir empfehlen, diesen Wert zu konfigurieren, um die Wahrscheinlichkeit solcher Fehler zu verringern. Die Elemente in der Warteschlange sind Schreibanfragen und entsprechen nicht direkt einer Anzahl von Nachrichten oder Byte. Daher ist der empfohlene Wert im Voraus schwer zu ermitteln.
Wenn Nachrichten von Kafka abgerufen werden, teilt der Connector die Arbeit basierend auf der Zieltabelle auf. Wenn alle Nachrichten in einer Abfrage in eine einzelne Tabelle geschrieben werden sollen, wird nur ein Arbeitselement hinzugefügt. Wenn die Nachrichten in einer Abfrage jedoch beispielsweise in drei Tabellen geschrieben werden, werden drei Arbeitselemente hinzugefügt. Die Größe eines Arbeitselements kann anhand der Konfigurationen für die Nachrichtenabfrage, der Größe der Kafka-Nachrichten und der Anzahl der Tabellen, in die geschrieben wird, grob geschätzt werden.
Schemas für einen BigQuery-Senken-Connector
Der BigQuery-Senken-Connector verwendet den konfigurierten Wertkonverter (value.converter), um Kafka-Datensatzwerte in Felder zu parsen. Anschließend werden die Felder in Spalten mit demselben Namen in der BigQuery-Tabelle geschrieben.
Der Connector benötigt ein Schema, um zu funktionieren. Das Schema kann auf folgende Weise bereitgestellt werden:
- Nachrichtenbasiertes Schema: Das Schema ist in jeder Nachricht enthalten.
- Tabellenbasiertes Schema: Der Connector leitet das Nachrichtenschema aus dem BigQuery-Tabellenschema ab.
- Schema-Registry: Der Connector liest das Schema aus einer Schema-Registry, z. B. der Managed Service for Apache Kafka-Schema-Registry (Vorabversion).
In den nächsten Abschnitten werden diese Optionen beschrieben.
Nachrichtenbasiertes Schema
In diesem Modus enthält jeder Kafka-Eintrag ein JSON-Schema. Der Connector verwendet das Schema, um die Datensatzdaten als BigQuery-Tabellenzeile zu schreiben.
Wenn Sie nachrichtenbasierte Schemas verwenden möchten, legen Sie die folgenden Attribute für den Connector fest:
value.converter=org.apache.kafka.connect.json.JsonConvertervalue.converter.schemas.enable=true
Beispiel für einen Kafka-Eintragswert:
{
"schema": {
"type": "struct",
"fields": [
{
"field": "user",
"type": "string",
"optional": false
},
{
"field": "age",
"type": "int64",
"optional": false
}
]
},
"payload": {
"user": "userId",
"age": 30
}
}
Wenn die Zieltabelle bereits vorhanden ist, muss das BigQuery-Tabellenschema mit dem eingebetteten Nachrichtenschema kompatibel sein. Wenn autoCreateTables=true, erstellt der Connector bei Bedarf automatisch die Zieltabelle. Weitere Informationen finden Sie unter Tabellenerstellung.
Wenn der Connector das BigQuery-Tabellenschema aktualisieren soll, wenn sich Nachrichtenschemas ändern, setzen Sie allowNewBigQueryFields, allowSchemaUnionization oder allowBigQueryRequiredFieldRelaxation auf true.
Tabellenbasiertes Schema
In diesem Modus enthalten die Kafka-Datensätze einfache JSON-Daten ohne explizites Schema. Der Connector leitet das Schema aus der Zieltabelle ab.
Voraussetzungen:
- Die BigQuery-Tabelle muss bereits vorhanden sein.
- Die Kafka-Eintragsdaten müssen mit dem Tabellenschema kompatibel sein.
- Dieser Modus unterstützt keine dynamischen Schemaaktualisierungen auf Grundlage eingehender Nachrichten.
Wenn Sie tabellenbasierte Schemas verwenden möchten, legen Sie die folgenden Attribute für den Connector fest:
value.converter=org.apache.kafka.connect.json.JsonConvertervalue.converter.schemas.enable=falsebigQueryPartitionDecorator=false
Wenn die BigQuery-Tabelle eine zeitbasierte Partitionierung mit täglicher Partitionierung verwendet, kann bigQueryPartitionDecorator den Wert true haben. Andernfalls legen Sie dieses Attribut auf false fest.
Beispiel für einen Kafka-Eintragswert:
{
"user": "userId",
"age": 30
}
Schema-Registry
In diesem Modus enthält jeder Kafka-Datensatz Apache Avro-Daten und das Nachrichtenschema wird in einer Schema-Registry gespeichert.
Wenn Sie den BigQuery-Senken-Connector mit einer Schemaregistrierung verwenden möchten, legen Sie die folgenden Attribute für den Connector fest:
value.converter=io.confluent.connect.avro.AvroConvertervalue.converter.schema.registry.url=SCHEMA_REGISTRY_URL
Ersetzen Sie SCHEMA_REGISTRY_URL durch die URL der Schemaregistrierung.
Wenn Sie den Connector mit der Schema-Registry von Managed Service for Apache Kafka verwenden möchten, legen Sie die folgende Property fest:
value.converter.bearer.auth.credentials.source=GCP
Weitere Informationen finden Sie unter Kafka Connect mit Schemaregistrierung verwenden.
Verwaltete Apache Iceberg-Tabellen
Der BigQuery-Senken-Connector unterstützt verwaltete Apache Iceberg-Tabellen (im Folgenden verwaltete Iceberg-Tabellen) als Senkenziel.
Verwaltete Iceberg-Tabellen bilden die Grundlage für die Erstellung von Lakehouses im offenen Format auf Google Cloud. Verwaltete Iceberg-Tabellen bieten dieselbe vollständig verwaltete Umgebung wie BigQuery-Tabellen, speichern Daten jedoch in kundeneigenen Storage-Buckets mit Parquet, um mit offenen Apache Iceberg-Tabellenformaten kompatibel zu sein.
Informationen zum Erstellen einer Apache Iceberg-Tabelle finden Sie unter Apache Iceberg-Tabelle erstellen.
BigQuery-Senken-Connector erstellen
Console
Rufen Sie in der Google Cloud Console die Seite Cluster verbinden auf.
Klicken Sie auf den Connect-Cluster, in dem Sie den Connector erstellen möchten.
Klicken Sie auf Connector erstellen.
Geben Sie für den Connector-Namen einen String ein.
Tipps zum Benennen von Connectors finden Sie in den Richtlinien zum Benennen einer Ressource von Managed Service for Apache Kafka.
Wählen Sie für Connector-Plug-in die Option BigQuery-Senke aus.
Geben Sie im Abschnitt Themen die Kafka-Themen an, aus denen gelesen werden soll. Sie können eine Liste von Themen oder einen regulären Ausdruck angeben, der mit Themennamen abgeglichen werden soll.
Option 1: Wählen Sie Liste mit Kafka-Themen auswählen aus. Wählen Sie in der Liste Kafka-Themen ein oder mehrere Themen aus. Klicken Sie auf OK.
Option 2: Wählen Sie Thema-Regex verwenden aus. Geben Sie im Feld Themen-Regex einen regulären Ausdruck ein.
Klicken Sie auf Dataset und geben Sie ein BigQuery-Dataset an. Sie können ein vorhandenes Dataset auswählen oder ein neues erstellen.
Optional: Fügen Sie im Feld Konfigurationen Konfigurationsattribute hinzu oder bearbeiten Sie die Standardattribute. Weitere Informationen finden Sie unter Connector konfigurieren.
Wählen Sie die Richtlinie für Task-Neustart aus. Weitere Informationen finden Sie unter Richtlinie für den Neustart von Aufgaben.
Klicken Sie auf Erstellen.
gcloud
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Zum Abrufen der aktuellen Richtlinie führen Sie den Befehl
gcloud managed-kafka connectors createaus:gcloud managed-kafka connectors create CONNECTOR_ID \ --location=LOCATION \ --connect-cluster=CONNECT_CLUSTER_ID \ --config-file=CONFIG_FILEErsetzen Sie Folgendes:
CONNECTOR_ID: Die ID oder der Name des Connectors. Tipps zum Benennen von Connectors finden Sie in den Richtlinien zum Benennen einer Ressource von Managed Service for Apache Kafka. Der Name eines Connectors kann nicht geändert werden.
LOCATION: Der Standort, an dem Sie den Connector erstellen. Dies muss derselbe Standort sein, an dem Sie den Connect-Cluster erstellt haben.
CONNECT_CLUSTER_ID: Die ID des Connect-Clusters, in dem der Connector erstellt wird.
CONFIG_FILE: Der Pfad zur YAML-Konfigurationsdatei für den BigQuery-Senken-Connector.
Hier ist ein Beispiel für eine Konfigurationsdatei für den BigQuery-Senken-Connector:
name: "BQ_SINK_CONNECTOR_ID" project: "GCP_PROJECT_ID" topics: "GMK_TOPIC_ID" tasks.max: 3 connector.class: "com.wepay.kafka.connect.bigquery.BigQuerySinkConnector" key.converter: "org.apache.kafka.connect.storage.StringConverter" value.converter: "org.apache.kafka.connect.json.JsonConverter" value.converter.schemas.enable: "false" defaultDataset: "BQ_DATASET_ID"Ersetzen Sie Folgendes:
BQ_SINK_CONNECTOR_ID: Die ID oder der Name des BigQuery-Senken-Connectors. Tipps zum Benennen von Connectors finden Sie in den Richtlinien zum Benennen von Managed Service for Apache Kafka-Ressourcen. Der Name eines Connectors kann nicht geändert werden.
GCP_PROJECT_ID: Die ID des Google Cloud-Projekts, in dem sich Ihr BigQuery-Dataset befindet.
GMK_TOPIC_ID: Die ID des Managed Service for Apache Kafka-Themas, aus dem die Daten an den BigQuery-Senken-Connector fließen.
BQ_DATASET_ID: Die ID des BigQuery-Datasets, das als Senke für die Pipeline fungiert.
Terraform
Sie können eine Terraform-Ressource verwenden, um einen Connector zu erstellen.
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Go
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Go unter Clientbibliotheken installieren. Weitere Informationen finden Sie in der API-Referenzdokumentation für Managed Service for Apache Kafka Go.
Richten Sie zur Authentifizierung bei Managed Service for Apache Kafka Standardanmeldedaten für Anwendungen(Application Default Credentials, ADC) ein. Weitere Informationen finden Sie unter Standardanmeldedaten für Anwendungen für eine lokale Entwicklungsumgebung einrichten.
Java
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Anleitung zur Einrichtung von Java unter Clientbibliotheken installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Managed Service for Apache Kafka Java API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Managed Service for Apache Kafka zu authentifizieren. Weitere Informationen finden Sie unter Standardanmeldedaten für Anwendungen für eine lokale Entwicklungsumgebung einrichten.
Python
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Python unter Clientbibliotheken installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Managed Service for Apache Kafka Python API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Managed Service for Apache Kafka zu authentifizieren. Weitere Informationen finden Sie unter Standardanmeldedaten für Anwendungen für eine lokale Entwicklungsumgebung einrichten.
Nachdem Sie einen Connector erstellt haben, können Sie ihn bearbeiten, löschen, pausieren, beenden oder neu starten.
Connector konfigurieren
In diesem Abschnitt werden einige Konfigurationsattribute beschrieben, die Sie für den Connector festlegen können. Eine vollständige Liste der Attribute, die für diesen Connector spezifisch sind, finden Sie unter BigQuery-Senken-Connector-Konfigurationen.
Tabellenname
Standardmäßig verwendet der Connector den Themennamen als BigQuery-Tabellennamen. Wenn Sie einen anderen Tabellennamen verwenden möchten, legen Sie das Attribut topic2TableMap im folgenden Format fest:
topic2TableMap=TOPIC_1:TABLE_1,TOPIC_2:TABLE_2,...
Tabellenerstellung
Der BigQuery-Senken-Connector kann die Zieltabellen erstellen, wenn sie nicht vorhanden sind.
Wenn
autoCreateTables=true, versucht der Connector, alle nicht vorhandenen BigQuery-Tabellen zu erstellen. Diese Einstellung ist das Standardverhalten.Wenn
autoCreateTables=false, erstellt der Connector keine Tabellen. Wenn eine Zieltabelle nicht vorhanden ist, tritt ein Fehler auf.
Wenn autoCreateTables auf true gesetzt ist, können Sie die folgenden Konfigurationseigenschaften verwenden, um genauer zu steuern, wie der Connector neue Tabellen erstellt und konfiguriert:
allBQFieldsNullableclusteringPartitionFieldNamesconvertDoubleSpecialValuespartitionExpirationMssanitizeFieldNamessanitizeTopicstimestampPartitionFieldName
Informationen zu diesen Attributen finden Sie unter BigQuery-Senken-Connector-Konfigurationen.
Kafka-Metadaten
Sie können zusätzliche Daten aus Kafka wie Metadaten und Schlüsselinformationen in die BigQuery-Tabelle zuordnen, indem Sie die Felder kafkaDataFieldName bzw. kafkaKeyFieldName konfigurieren. Beispiele für Metadateninformationen sind das Kafka-Thema, die Partition, der Offset und die Einfügezeit.