In dieser Anleitung erfahren Sie, wie Sie die Vorlage Bigtable-Änderungsstreams zu Pub/Sub verwenden, einschließlich der Einrichtung eines Themas und der Konfiguration der Vorlage. Optional können Sie eine Cloud Run-Funktion in der Programmiersprache Ihrer Wahl erstellen, die durch den Ereignisstream ausgelöst wird.
Diese Anleitung richtet sich an technische Nutzer, die mit Bigtable, dem Schreiben von Code und Event-Streaming-Diensten vertraut sind.
Pub/Sub-Thema erstellen
Rufen Sie in der Google Cloud Console die Pub/Sub-Seite Themen auf.
Klicken Sie auf Thema erstellen.
Legen Sie die ID auf
bigtable-change-stream-topic
fest.Wählen Sie Schema verwenden aus.
Klicken Sie im Drop-down-Menü Pub/Sub-Schema auswählen auf Neues Schema erstellen. Daraufhin wird ein neuer Tab geöffnet, auf dem Sie das Schema definieren können.
- Legen Sie die Schema-ID auf
bigtable-change-stream-schema
fest. - Legen Sie den Schematyp auf Avro fest.
- Fügen Sie Folgendes als Schemadefinition ein. Weitere Informationen zum Schema finden Sie auf der Seite mit der Vorlagendokumentation.
{ "name" : "ChangelogEntryMessage", "type" : "record", "namespace" : "com.google.cloud.teleport.bigtable", "fields" : [ { "name" : "rowKey", "type" : "bytes"}, { "name" : "modType", "type" : { "name": "ModType", "type": "enum", "symbols": ["SET_CELL", "DELETE_FAMILY", "DELETE_CELLS", "UNKNOWN"]} }, { "name": "isGC", "type": "boolean" }, { "name": "tieBreaker", "type": "int"}, { "name": "columnFamily", "type": "string"}, { "name": "commitTimestamp", "type" : "long"}, { "name" : "sourceInstance", "type" : "string"}, { "name" : "sourceCluster", "type" : "string"}, { "name" : "sourceTable", "type" : "string"}, { "name": "column", "type" : ["null", "bytes"]}, { "name": "timestamp", "type" : ["null", "long"]}, { "name": "timestampFrom", "type" : ["null", "long"]}, { "name": "timestampTo", "type" : ["null", "long"]}, { "name" : "value", "type" : ["null", "bytes"]} ] }
- Klicken Sie auf Erstellen, um das Schema zu erstellen.
- Legen Sie die Schema-ID auf
Schließen Sie den Tab Schema erstellen, aktualisieren Sie die Schemaliste und wählen Sie das neu definierte Schema aus.
Klicken Sie auf Erstellen, um das Thema zu erstellen.
Optional: Cloud Run-Funktion erstellen
Möglicherweise möchten Sie den Pub/Sub-Stream mit einer Cloud Run-Funktion verarbeiten.
- Klicken Sie auf der Seite Details für das Thema
bigtable-change-stream-topic
auf Cloud-Funktion auslösen . - Geben Sie im Feld Funktionsname den Namen
bt-ps-tutorial-function
ein. - Klicken Sie im Abschnitt Quellcode auf das Drop-down-Menü Laufzeit und wählen Sie dann die gewünschte Laufzeit und Programmiersprache aus. Es wird ein
hello world
generiert, in dem der Änderungsstream ausgegeben wird, sobald er eingeht. Weitere Informationen zum Schreiben von Cloud Run Functions-Funktionen finden Sie in der Dokumentation. - Übernehmen Sie für die anderen Felder die Standardwerte.
- Klicken Sie auf Funktion bereitstellen.
Tabelle mit aktiviertem Änderungsstream erstellen
Rufen Sie in der Google Cloud Console die Bigtable-Seite Instanzen auf.
Klicken Sie auf die ID der Instanz, die Sie für diese Anleitung verwenden.
Wenn Sie keine Instanz haben, erstellen Sie eine Instanz mit den Standardkonfigurationen in einer Region in Ihrer Nähe.
Klicken Sie im linken Navigationsbereich auf Sicherungen.
Klicken Sie auf Tabelle erstellen.
Geben Sie der Tabelle den Namen
change-streams-pubsub-tutorial
.Fügen Sie eine Spaltenfamilie mit dem Namen
cf
hinzu.Wählen Sie Änderungsstream aktivieren aus.
Klicken Sie auf Erstellen.
Datenpipeline initialisieren, um den Änderungsstream zu erfassen
- Suchen Sie auf der Bigtable-Seite Tabellen nach Ihrer Tabelle
change-streams-pubsub-tutorial
. - Klicken Sie in der Spalte Änderungsstream auf Verbinden.
- Wählen Sie im Dialogfeld Pub/Sub aus.
- Klicken Sie auf Dataflow-Job erstellen.
- Legen Sie auf der Dataflow-Seite Job erstellen den Namen des Pub/Sub-Ausgabethemas auf
bigtable-change-stream-topic
fest. - Legen Sie die Bigtable-Anwendungsprofil-ID auf
default
fest. - Klicken Sie auf Job ausführen.
- Warten Sie, bis der Jobstatus Wird gestartet oder Wird ausgeführt lautet, bevor Sie fortfahren. Das dauert etwa 5 Minuten, nachdem der Job in die Warteschlange gestellt wurde.
Daten in Bigtable schreiben
Schreiben Sie in Cloud Shell einige Zeilen in Bigtable, damit das Änderungsprotokoll einige Daten in den Pub/Sub-Stream schreiben kann. Solange Sie die Daten nach der Erstellung des Jobs schreiben, werden die Änderungen angezeigt. Sie müssen nicht warten, bis der Jobstatus
running
lautet.cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \ set change-streams-pubsub-tutorial user123 cf:col1=abc cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \ set change-streams-pubsub-tutorial user546 cf:col1=def cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \ set change-streams-pubsub-tutorial user789 cf:col1=ghi
Änderungsprotokolle in Pub/Sub ansehen
Rufen Sie in der Google Cloud Console die Seite „Pub/Sub“ → Abos auf.
Klicken Sie auf das automatisch erstellte Abo für Ihr Thema
bigtable-change-stream-topic
. Er solltebigtable-change-stream-topic-sub
heißen.Rufen Sie den Tab Nachrichten auf.
Klicken Sie auf Pull.
Sehen Sie sich die Liste der Nachrichten an und rufen Sie die von Ihnen geschriebenen Daten auf.
Optional: Änderungen in den Cloud Run-Funktionslogs ansehen
Wenn Sie eine Cloud Run-Funktion erstellt haben, können Sie die Änderungen in den Logs ansehen.
Wechseln Sie in der Google Cloud -Console zu Cloud Run-Funktionen.
Klicken Sie auf die Funktion
bt-ps-tutorial-function
.Rufen Sie den Tab Logs auf.
Severity muss mindestens auf Info festgelegt sein, damit Sie die Logs sehen können.
Sie können sich die Logs ansehen und die von Ihnen geschriebenen Daten aufrufen.
Die Ausgabe sieht dann ungefähr so aus:
Pub/Sub message: {"rowKey":"user789","modType":"SET_CELL","isGC":false,"tieBreaker":0,"columnFamily":"cf","commitTimestamp":1695653833064548,"sourceInstance":"YOUR-INSTANCE","sourceCluster":"YOUR-INSTANCE-c1","sourceTable":"change-streams-pubsub-tutorial","column":{"bytes":"col1"},"timestamp":{"long":1695653832278000},"timestampFrom":null,"timestampTo":null,"value":{"bytes":"ghi"}}