Modello da Apache Cassandra a Bigtable

Il modello da Apache Cassandra a Bigtable copia una tabella da Apache Cassandra in Bigtable. Questo modello richiede una configurazione minima e replica la struttura della tabella in Cassandra il più fedelmente possibile in Bigtable.

Il modello da Apache Cassandra a Bigtable è utile per le seguenti attività:

  • Eseguire la migrazione del database Apache Cassandra in caso di tempi di inattività ridotti accettabili.
  • Replica periodicamente delle tabelle Cassandra in Bigtable per la pubblicazione globale.

Requisiti della pipeline

  • La tabella Bigtable di destinazione deve esistere prima di eseguire la pipeline.
  • Connessione di rete tra i worker di Dataflow e i nodi di Apache Cassandra.

Conversione del tipo

Il modello da Apache Cassandra a Bigtable converte automaticamente i tipi di dati di Apache Cassandra in tipi di dati di Bigtable.

La maggior parte delle primitive è rappresentata nello stesso modo in Bigtable e Apache Cassandra; tuttavia, le seguenti primitive sono rappresentate in modo diverso:

  • Date e Timestamp vengono convertiti in DateTime oggetti
  • UUID è stato convertito in String
  • Varint è stato convertito in BigDecimal

Apache Cassandra supporta anche in modo nativo tipi più complessi come Tuple, List, Set e Map. Le tuple non sono supportate da questa pipeline perché non esiste un tipo corrispondente in Apache Beam.

Ad esempio, in Apache Cassandra puoi avere una colonna di tipo List denominata "mylist" e valori come quelli della seguente tabella:

riga mylist
1 (a,b,c)

La pipeline espande la colonna dell'elenco in tre diverse colonne (note in Bigtable come qualificatori di colonna). Il nome delle colonne è "mylist", ma la pipeline aggiunge l'indice dell'elemento nell'elenco, ad esempio "mylist[0]".

riga mylist[0] mylist[1] mylist[2]
1 a b C

La pipeline gestisce gli insiemi allo stesso modo degli elenchi, ma aggiunge un suffisso per indicare se la cella è una chiave o un valore.

riga mymap
1 {"first_key":"first_value","another_key":"different_value"}

Dopo la trasformazione, la tabella viene visualizzata come segue:

riga mymap[0].key mymap[0].value mymap[1].key mymap[1].valore
1 first_key first_value another_key different_value

Conversione della chiave principale

In Apache Cassandra, una chiave primaria viene definita utilizzando il linguaggio di definizione dei dati. La chiave primaria è semplice, composita o composta con le colonne di clustering. Bigtable supporta la creazione manuale di chiavi di riga, ordinate lessicograficamente in un array di byte. La pipeline raccoglie automaticamente le informazioni sul tipo di chiave e genera una chiave in base alle best practice per la creazione di chiavi riga basate su più valori.

Parametri del modello

Parametri obbligatori

  • cassandraHosts : gli host dei nodi Apache Cassandra in un elenco separato da virgole.
  • cassandraKeyspace : lo spazio delle chiavi di Apache Cassandra in cui si trova la tabella.
  • cassandraTable : la tabella Apache Cassandra da copiare.
  • bigtableProjectId : l'ID progetto Google Cloud associato all'istanza Bigtable.
  • bigtableInstanceId : l'ID dell'istanza Bigtable in cui viene copiata la tabella Apache Cassandra.
  • bigtableTableId : il nome della tabella Bigtable in cui viene copiata la tabella Apache Cassandra.

Parametri facoltativi

  • cassandraPort : la porta TCP da utilizzare per raggiungere Apache Cassandra sui nodi. Il valore predefinito è 9042.
  • defaultColumnFamily : il nome della famiglia di colonne della tabella Bigtable. Il valore predefinito è predefinito.
  • rowKeySeparator : il separatore utilizzato per creare le chiavi di riga. Il valore predefinito è '#'.
  • splitLargeRows : il flag per abilitare la suddivisione di righe di grandi dimensioni in più richieste MutateRows. Tieni presente che quando una riga di grandi dimensioni è suddivisa tra più chiamate API, gli aggiornamenti della riga non sono atomici. .

Esegui il modello

Console

  1. Vai alla pagina Crea job da modello di Dataflow.
  2. Vai a Crea job da modello
  3. Nel campo Nome job, inserisci un nome univoco per il job.
  4. (Facoltativo) Per Endpoint a livello di regione, seleziona un valore dal menu a discesa. La regione predefinita è us-central1.

    Per un elenco di regioni in cui è possibile eseguire un job Dataflow, consulta Località di Dataflow.

  5. Dal menu a discesa Modello Dataflow, seleziona the Cassandra to Cloud Bigtable template.
  6. Inserisci i valori parametro negli appositi campi.
  7. Fai clic su Esegui job.

gcloud

Nella shell o nel terminale, esegui il modello:

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

Sostituisci quanto segue:

  • JOB_NAME: un nome job univoco a tua scelta
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi utilizzare i seguenti valori:

    • latest per utilizzare la versione più recente del modello, disponibile nella cartella padre non con data del bucket: gs://dataflow-templates-REGION_NAME/latest/
    • il nome della versione, ad esempio 2023-09-12-00_RC00, per utilizzare una versione specifica del modello, che è possibile trovare nidificata nella rispettiva cartella principale con data nel bucket: gs://dataflow-templates-REGION_NAME/
  • REGION_NAME: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempio us-central1
  • BIGTABLE_PROJECT_ID: l'ID progetto in cui si trova Bigtable
  • BIGTABLE_INSTANCE_ID: l'ID dell'istanza Bigtable
  • BIGTABLE_TABLE_ID: il nome della tabella Bigtable
  • CASSANDRA_HOSTS: l'elenco di host Apache Cassandra; se vengono forniti più host, segui le istruzioni su come utilizzare l'interpretazione letterale per le virgole.
  • CASSANDRA_KEYSPACE: lo spazio delle chiavi di Apache Cassandra in cui si trova la tabella
  • CASSANDRA_TABLE: la tabella Apache Cassandra di cui è necessario eseguire la migrazione

API

Per eseguire il modello utilizzando l'API REST, invia una richiesta POST HTTP. Per maggiori informazioni sull'API e sui relativi ambiti di autorizzazione, consulta 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" }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto Google Cloud in cui vuoi eseguire il job Dataflow
  • JOB_NAME: un nome job univoco a tua scelta
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi utilizzare i seguenti valori:

    • latest per utilizzare la versione più recente del modello, disponibile nella cartella padre non con data del bucket: gs://dataflow-templates-REGION_NAME/latest/
    • il nome della versione, ad esempio 2023-09-12-00_RC00, per utilizzare una versione specifica del modello, che è possibile trovare nidificata nella rispettiva cartella principale con data nel bucket: gs://dataflow-templates-REGION_NAME/
  • LOCATION: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempio us-central1
  • BIGTABLE_PROJECT_ID: l'ID progetto in cui si trova Bigtable
  • BIGTABLE_INSTANCE_ID: l'ID dell'istanza Bigtable
  • BIGTABLE_TABLE_ID: il nome della tabella Bigtable
  • CASSANDRA_HOSTS: l'elenco di host Apache Cassandra; se vengono forniti più host, segui le istruzioni su come utilizzare l'interpretazione letterale per le virgole.
  • CASSANDRA_KEYSPACE: lo spazio delle chiavi di Apache Cassandra in cui si trova la tabella
  • CASSANDRA_TABLE: la tabella Apache Cassandra di cui è necessario eseguire la migrazione

Passaggi successivi