Die Vorlage „Apache Cassandra für Bigtable“ kopiert eine Tabelle von Apache Cassandra nach Bigtable. Diese Vorlage erfordert eine minimale Konfiguration und repliziert die Tabellenstruktur in Cassandra so genau wie möglich in Bigtable.
Die Vorlage "Apache Cassandra für Bigtable" eignet sich für Folgendes:
- Migration einer Apache Cassandra-Datenbank, wenn kurze Ausfallzeiten akzeptabel sind.
- Regelmäßige Replikation von Cassandra-Tabellen in Bigtable für globale Bereitstellungszwecke.
Pipelineanforderungen
- Die Bigtable-Zieltabelle muss vorhanden sein, bevor Sie die Pipeline ausführen.
- Netzwerkverbindung zwischen Dataflow-Workern und Apache Cassandra-Knoten.
Typkonvertierung
Die Vorlage „Apache Cassandra für Bigtable“ konvertiert Apache Cassandra-Datentypen automatisch in Bigtable-Datentypen.
Die meisten Primitiven werden in Bigtable und Apache Cassandra auf die gleiche Weise dargestellt. Die folgenden Primitiven werden jedoch anders dargestellt:
Date
undTimestamp
werden inDateTime
-Objekte konvertiertUUID
wird konvertiert inString
Varint
wird konvertiert inBigDecimal
Apache Cassandra unterstützt nativ auch komplexere Typen wie Tuple
, List
, Set
und Map
.
Tupel werden von dieser Pipeline nicht unterstützt, da es in Apache Beam keinen entsprechenden Typ gibt.
In Apache Cassandra können Sie beispielsweise eine Spalte vom Typ List
mit dem Namen „mylist“ und Werte wie die in der folgenden Tabelle haben:
row | mylist |
---|---|
1 | (a,b,c) |
Die Pipeline erweitert die Listenspalte in drei verschiedene Spalten (in Bigtable als Spaltenqualifizierer bezeichnet). Der Name der Spalten lautet „mylist“, aber die Pipeline hängt den Index des Elements in der Liste an, z. B. „mylist [0]“.
row | mylist[0] | mylist[1] | mylist[2] |
---|---|---|---|
1 | a | b | c |
Die Pipeline verarbeitet die Sätze wie Listen, fügt jedoch ein Suffix hinzu, das angibt, ob die Zelle ein Schlüssel oder ein Wert ist.
row | mymap |
---|---|
1 | {"first_key":"first_value","another_key":"different_value"} |
Nach der Transformation wird die Tabelle so angezeigt:
row | mymap[0].key | mymap[0].value | mymap[1].key | mymap[1].value |
---|---|---|---|---|
1 | first_key | first_value | another_key | different_value |
Primärschlüssel-Konvertierung
In Apache Cassandra wird ein Primärschlüssel mithilfe der Datendefinitionssprache definiert. Der Primärschlüssel ist entweder einfach, zusammengesetzt oder mit Clustering-Spalten kombiniert. Bigtable unterstützt die manuelle Erstellung von Zeilenschlüsseln, die lexikografisch in einem Byte-Array angeordnet sind. Die Pipeline sammelt automatisch Informationen zum Schlüsseltyp und erstellt basierend auf Best Practices zum Erstellen von Zeilenschlüsseln basierend auf mehreren Werten automatisch einen Schlüssel.
Vorlagenparameter
Erforderliche Parameter
- cassandraHosts: Die Hosts der Apache Cassandra-Knoten in einer kommagetrennten Liste.
- cassandraKeyspace: Der Apache Cassandra-Schlüsselbereich, in dem sich die Tabelle befindet.
- cassandraTable: Die zu kopierende Apache Cassandra-Tabelle.
- bigtableProjectId: Die Google Cloud-Projekt-ID, die mit der Bigtable-Instanz verknüpft ist.
- bigtableInstanceId: Die ID der Bigtable-Instanz, in die die Apache Cassandra-Tabelle kopiert wird.
- bigtableTableId: Der Name der Bigtable-Tabelle, in die die Apache Cassandra-Tabelle kopiert wird.
Optionale Parameter
- cassandraPort: Der TCP-Port, über den Apache Cassandra auf den Knoten erreicht werden soll. Der Standardwert ist
9042
. - defaultColumnFamily: Der Name der Spaltenfamilie der Bigtable-Tabelle. Der Standardwert ist
default
. - rowKeySeparator: Das Trennzeichen, das zum Erstellen von Zeilenschlüsseln verwendet wird. Der Standardwert ist
#
. - splitLargeRows: Mit diesem Flag können Sie das Aufteilen großer Zeilen in mehrere MutateRows-Anfragen aktivieren. Wenn eine große Zeile auf mehrere API-Aufrufe aufgeteilt wird, sind die Aktualisierungen der Zeile nicht atomar. .
Führen Sie die Vorlage aus.
Console
- Rufen Sie die Dataflow-Seite Job aus Vorlage erstellen auf. Zur Seite "Job aus Vorlage erstellen“
- Geben Sie im Feld Jobname einen eindeutigen Jobnamen ein.
- Optional: Wählen Sie für Regionaler Endpunkt einen Wert aus dem Drop-down-Menü aus. Die Standardregion ist
us-central1
.Eine Liste der Regionen, in denen Sie einen Dataflow-Job ausführen können, finden Sie unter Dataflow-Standorte.
- Wählen Sie im Drop-down-Menü Dataflow-Vorlage die Option the Cassandra to Cloud Bigtable templateaus.
- Geben Sie Ihre Parameterwerte in die Parameterfelder ein.
- Klicken Sie auf Job ausführen.
gcloud
Führen Sie die Vorlage in der Shell oder im Terminal aus:
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cassandra_To_Cloud_Bigtable \ --region REGION_NAME \ --parameters \ bigtableProjectId=BIGTABLE_PROJECT_ID,\ bigtableInstanceId=BIGTABLE_INSTANCE_ID,\ bigtableTableId=BIGTABLE_TABLE_ID,\ cassandraHosts=CASSANDRA_HOSTS,\ cassandraKeyspace=CASSANDRA_KEYSPACE,\ cassandraTable=CASSANDRA_TABLE
Ersetzen Sie dabei Folgendes:
JOB_NAME
: ein eindeutiger Jobname Ihrer WahlVERSION
: Die Version der Vorlage, die Sie verwenden möchtenSie können die folgenden Werte verwenden:
latest
zur Verwendung der neuesten Version der Vorlage, die im nicht datierten übergeordneten Ordner im Bucket verfügbar ist: gs://dataflow-templates-REGION_NAME/latest/- Den Versionsnamen wie
2023-09-12-00_RC00
, um eine bestimmte Version der Vorlage zu verwenden. Diese ist verschachtelt im jeweiligen datierten übergeordneten Ordner im Bucket enthalten: gs://dataflow-templates-REGION_NAME/.
REGION_NAME
: die Region, in der Sie Ihren Dataflow-Job bereitstellen möchten, z. B.us-central1
BIGTABLE_PROJECT_ID
: Ihre Projekt-ID, in der sich Bigtable befindetBIGTABLE_INSTANCE_ID
: die Bigtable-Instanz-IDBIGTABLE_TABLE_ID
: der Name Ihres Bigtable-TabellennamensCASSANDRA_HOSTS
: Apache Cassandra-Hostliste. Wenn mehrere Hosts angegeben sind, folgen Sie der Anleitung zum Maskieren von Kommas.CASSANDRA_KEYSPACE
: Der Apache Cassandra-Schlüsselbereich, in dem sich die Tabelle befindet.CASSANDRA_TABLE
: Die Apache Cassandra-Tabelle, die migriert werden soll
API
Senden Sie eine HTTP-POST-Anfrage, um die Vorlage mithilfe der REST API auszuführen. Weitere Informationen zur API und ihren Autorisierungsbereichen finden Sie unter projects.templates.launch
.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/Cassandra_To_Cloud_Bigtable { "jobName": "JOB_NAME", "parameters": { "bigtableProjectId": "BIGTABLE_PROJECT_ID", "bigtableInstanceId": "BIGTABLE_INSTANCE_ID", "bigtableTableId": "BIGTABLE_TABLE_ID", "cassandraHosts": "CASSANDRA_HOSTS", "cassandraKeyspace": "CASSANDRA_KEYSPACE", "cassandraTable": "CASSANDRA_TABLE" }, "environment": { "zone": "us-central1-f" } }
Ersetzen Sie dabei Folgendes:
PROJECT_ID
: die ID des Google Cloud-Projekts, in dem Sie den Dataflow-Job ausführen möchtenJOB_NAME
: ein eindeutiger Jobname Ihrer WahlVERSION
: Die Version der Vorlage, die Sie verwenden möchtenSie können die folgenden Werte verwenden:
latest
zur Verwendung der neuesten Version der Vorlage, die im nicht datierten übergeordneten Ordner im Bucket verfügbar ist: gs://dataflow-templates-REGION_NAME/latest/- Den Versionsnamen wie
2023-09-12-00_RC00
, um eine bestimmte Version der Vorlage zu verwenden. Diese ist verschachtelt im jeweiligen datierten übergeordneten Ordner im Bucket enthalten: gs://dataflow-templates-REGION_NAME/.
LOCATION
: die Region, in der Sie Ihren Dataflow-Job bereitstellen möchten, z. B.us-central1
BIGTABLE_PROJECT_ID
: Ihre Projekt-ID, in der sich Bigtable befindetBIGTABLE_INSTANCE_ID
: die Bigtable-Instanz-IDBIGTABLE_TABLE_ID
: der Name Ihres Bigtable-TabellennamensCASSANDRA_HOSTS
: Apache Cassandra-Hostliste. Wenn mehrere Hosts angegeben sind, folgen Sie der Anleitung zum Maskieren von Kommas.CASSANDRA_KEYSPACE
: Der Apache Cassandra-Schlüsselbereich, in dem sich die Tabelle befindet.CASSANDRA_TABLE
: Die Apache Cassandra-Tabelle, die migriert werden soll
Nächste Schritte
- Dataflow-Vorlagen
- Sehen Sie sich die Liste der von Google bereitgestellten Vorlagen an.