Template Apache Cassandra ke Bigtable

Template Apache Cassandra ke Bigtable menyalin tabel dari Apache Cassandra ke Bigtable. Template ini memerlukan konfigurasi minimal dan mereplikasi struktur tabel di Cassandra semirip mungkin di Bigtable.

Template Apache Cassandra ke Bigtable berguna untuk berikut ini:

  • Memigrasikan database Apache Cassandra saat periode nonaktif singkat dapat diterima.
  • Mereplikasi tabel Cassandra secara berkala ke Bigtable untuk penayangan global.

Persyaratan pipeline

  • Tabel Bigtable target harus ada sebelum menjalankan pipeline.
  • Koneksi jaringan antara pekerja Dataflow dan node Apache Cassandra.

Konversi jenis

Template Apache Cassandra ke Bigtable secara otomatis mengonversi jenis data Apache Cassandra ke jenis data Bigtable.

Sebagian besar komponen dasar dinyatakan dengan cara yang sama di Bigtable dan Apache Cassandra, tetapi komponen dasar berikut dinyatakan secara berbeda:

  • Date dan Timestamp dikonversi menjadi objek DateTime
  • UUID dikonversi menjadi String
  • Varint dikonversi menjadi BigDecimal

Apache Cassandra juga secara native mendukung jenis yang lebih kompleks seperti Tuple, List, Set, dan Map. Tuple tidak didukung oleh pipeline ini karena tidak ada jenis yang sesuai di Apache Beam.

Misalnya, di Apache Cassandra, Anda dapat memiliki kolom jenis List bernama "mylist" dan nilai seperti yang ada di tabel berikut:

baris mylist
1 (a,b,c)

Pipeline memperluas kolom daftar menjadi tiga kolom yang berbeda (dikenal di Bigtable sebagai penentu kolom). Nama kolom adalah "mylist", tetapi pipeline menambahkan indeks item dalam daftar, seperti "mylist[0]".

baris mylist[0] mylist[1] mylist[2]
1 a b c

Pipeline menangani set dengan cara yang sama seperti daftar, tetapi menambahkan akhiran untuk menunjukkan apakah sel merupakan kunci atau nilai.

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

Setelah transformasi, tabel akan muncul seperti berikut:

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

Konversi kunci utama

Di Apache Cassandra, kunci utama ditetapkan menggunakan bahasa definisi data. Kunci utamanya dapat bersifat sederhana, gabungan, atau kompleks dengan kolom pengelompokan. Bigtable mendukung pembuatan row-key manual, yang diurutkan secara leksikografis pada array byte. Pipeline secara otomatis mengumpulkan informasi tentang jenis kunci dan membuat kunci berdasarkan praktik terbaik untuk membuat row-key berdasarkan beberapa nilai.

Parameter template

Parameter yang diperlukan

  • cassandraHosts: Host node Apache Cassandra dalam daftar yang dipisahkan koma.
  • cassandraKeyspace: Keyspace Apache Cassandra tempat tabel berada.
  • cassandraTable: Tabel Apache Cassandra yang akan disalin.
  • bigtableProjectId: ID project Google Cloud yang terkait dengan instance Bigtable.
  • bigtableInstanceId: ID instance Bigtable tempat tabel Apache Cassandra disalin.
  • bigtableTableId: Nama tabel Bigtable yang menjadi tujuan penyalinan tabel Apache Cassandra.

Parameter opsional

  • cassandraPort: Port TCP yang akan digunakan untuk menjangkau Apache Cassandra di node. Nilai defaultnya adalah 9042.
  • defaultColumnFamily: Nama grup kolom tabel Bigtable. Nilai defaultnya adalah default.
  • rowKeySeparator: Pemisah yang digunakan untuk membuat kunci baris. Nilai defaultnya adalah #.
  • splitLargeRows: Flag untuk mengaktifkan pemisahan baris besar menjadi beberapa permintaan MutateRows. Perhatikan bahwa saat baris besar dibagi di antara beberapa panggilan API, pembaruan pada baris tidak bersifat atomik. .
  • writetimeCassandraColumnSchema: Jalur GCS ke skema untuk menyalin waktu penulisan Cassandra ke Bigtable. Perintah untuk membuat skema ini adalah cqlsh -e "select json * from system_schema.columns where keyspace_name='$CASSANDRA_KEYSPACE' and table_name='$CASSANDRA_TABLE'`" > column_schema.json. Tetapkan $WRITETIME_CASSANDRA_COLUMN_SCHEMA ke jalur GCS, misalnya gs://$BUCKET_NAME/column_schema.json. Kemudian, upload skema ke GCS: gcloud storage cp column_schema.json $WRITETIME_CASSANDRA_COLUMN_SCHEMA. Memerlukan Cassandra versi 2.2 dan yang lebih baru untuk dukungan JSON.
  • setZeroTimestamp: Flag untuk menyetel stempel waktu sel Bigtable ke 0 jika writetime Cassandra tidak ada. Perilaku default saat tanda ini tidak disetel adalah menyetel stempel waktu sel Bigtable sebagai waktu replikasi template, yaitu sekarang.

Menjalankan template

Konsol

  1. Buka halaman Dataflow Create job from template.
  2. Buka Membuat tugas dari template
  3. Di kolom Nama tugas, masukkan nama tugas yang unik.
  4. Opsional: Untuk Endpoint regional, pilih nilai dari menu drop-down. Region default-nya adalah us-central1.

    Untuk mengetahui daftar region tempat Anda dapat menjalankan tugas Dataflow, lihat Lokasi Dataflow.

  5. Dari menu drop-down Template Dataflow, pilih the Cassandra to Cloud Bigtable template.
  6. Di kolom parameter yang disediakan, masukkan nilai parameter Anda.
  7. Klik Run job.

gcloud

Di shell atau terminal Anda, jalankan template:

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

Ganti kode berikut:

  • JOB_NAME: nama tugas unik pilihan Anda
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • REGION_NAME: region tempat Anda ingin men-deploy tugas Dataflow—misalnya, us-central1
  • BIGTABLE_PROJECT_ID: project ID Anda tempat Bigtable berada
  • BIGTABLE_INSTANCE_ID: ID instance Bigtable
  • BIGTABLE_TABLE_ID: nama tabel Bigtable Anda
  • CASSANDRA_HOSTS: daftar host Apache Cassandra; jika beberapa host disediakan, ikuti petunjuk tentang cara menghindari koma
  • CASSANDRA_KEYSPACE: keyspace Apache Cassandra tempat tabel berada
  • CASSANDRA_TABLE: tabel Apache Cassandra yang perlu dimigrasikan

API

Untuk menjalankan template menggunakan REST API, kirim permintaan HTTP POST. Untuk mengetahui informasi selengkapnya tentang API dan cakupan otorisasinya, lihat 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" }
}

Ganti kode berikut:

  • PROJECT_ID: ID Google Cloud project tempat Anda ingin menjalankan tugas Dataflow
  • JOB_NAME: nama tugas unik pilihan Anda
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • LOCATION: region tempat Anda ingin men-deploy tugas Dataflow—misalnya, us-central1
  • BIGTABLE_PROJECT_ID: project ID Anda tempat Bigtable berada
  • BIGTABLE_INSTANCE_ID: ID instance Bigtable
  • BIGTABLE_TABLE_ID: nama tabel Bigtable Anda
  • CASSANDRA_HOSTS: daftar host Apache Cassandra; jika beberapa host disediakan, ikuti petunjuk tentang cara menghindari koma
  • CASSANDRA_KEYSPACE: keyspace Apache Cassandra tempat tabel berada
  • CASSANDRA_TABLE: tabel Apache Cassandra yang perlu dimigrasikan

Langkah berikutnya