Vorlage „Apache Cassandra für Bigtable“

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 und Timestamp werden in DateTime-Objekte konvertiert
  • UUID wird konvertiert in String
  • Varint wird konvertiert in BigDecimal

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

  1. Rufen Sie die Dataflow-Seite Job aus Vorlage erstellen auf.
  2. Zur Seite "Job aus Vorlage erstellen“
  3. Geben Sie im Feld Jobname einen eindeutigen Jobnamen ein.
  4. 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.

  5. Wählen Sie im Drop-down-Menü Dataflow-Vorlage die Option the Cassandra to Cloud Bigtable templateaus.
  6. Geben Sie Ihre Parameterwerte in die Parameterfelder ein.
  7. 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 Wahl
  • VERSION: Die Version der Vorlage, die Sie verwenden möchten

    Sie 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 befindet
  • BIGTABLE_INSTANCE_ID: die Bigtable-Instanz-ID
  • BIGTABLE_TABLE_ID: der Name Ihres Bigtable-Tabellennamens
  • CASSANDRA_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öchten
  • JOB_NAME: ein eindeutiger Jobname Ihrer Wahl
  • VERSION: Die Version der Vorlage, die Sie verwenden möchten

    Sie 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 befindet
  • BIGTABLE_INSTANCE_ID: die Bigtable-Instanz-ID
  • BIGTABLE_TABLE_ID: der Name Ihres Bigtable-Tabellennamens
  • CASSANDRA_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