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 to Bigtable berguna untuk hal berikut:
- Memigrasikan database Apache Cassandra saat periode nonaktif singkat dapat diterima.
- Mereplikasi tabel Cassandra secara berkala ke Bigtable untuk melakukan penyaluran 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 primitif direpresentasikan dengan cara yang sama di Bigtable dan Apache Cassandra. Namun, primitif berikut direpresentasikan secara berbeda:
Date
danTimestamp
dikonversi menjadi objekDateTime
UUID
dikonversi menjadiString
Varint
dikonversi menjadiBigDecimal
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
yang disebut "mylist" dan nilai seperti yang ada dalam 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 sebagai berikut:
baris | mymap[0].key | mymap[0].value | mymap[1].key | nilai peta[1] |
---|---|---|---|---|
1 | first_key | first_value | another_key | different_value |
Konversi kunci utama
Di Apache Cassandra, kunci utama ditetapkan menggunakan bahasa definisi data. Kunci utama dapat bersifat sederhana, gabungan, atau majemuk dengan kolom pengelompokan. Bigtable mendukung konstruksi kunci baris 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 | Deskripsi |
---|---|
cassandraHosts |
Host node Apache Cassandra dalam daftar yang dipisahkan koma. |
cassandraPort |
(Opsional) Port TCP untuk menjangkau Apache Cassandra pada node (default-nya adalah 9042 ). |
cassandraKeyspace |
Keyspace Apache Cassandra tempat tabel berada. |
cassandraTable |
Tabel Apache Cassandra yang akan disalin. |
bigtableProjectId |
ID Project Google Cloud dari instance Bigtable tempat tabel Apache Cassandra disalin. |
bigtableInstanceId |
ID instance Bigtable tempat untuk menyalin tabel Apache Cassandra. |
bigtableTableId |
Nama tabel Bigtable tempat untuk menyalin tabel Apache Cassandra. |
defaultColumnFamily |
(Opsional) Nama jenis kolom tabel Bigtable (default-nya adalah default ). |
rowKeySeparator |
(Opsional) Pemisah yang digunakan untuk membuat kunci baris (default-nya adalah # ). |
Menjalankan template
Konsol
- Buka halaman Create job from template Dataflow. Buka Buat tugas dari template
- Di kolom Job name, masukkan nama pekerjaan yang unik.
- Opsional: Untuk Endpoint regional, pilih nilai dari menu drop-down. Region
default-nya adalah
us-central1
.Untuk daftar region tempat Anda dapat menjalankan tugas Dataflow, lihat Lokasi Dataflow.
- Dari menu drop-down Dataflow template, pilih the Cassandra to Cloud Bigtable template.
- Di kolom parameter yang disediakan, masukkan parameter value Anda.
- 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 pekerjaan unik pilihan AndaVERSION
: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latest
untuk menggunakan versi terbaru template, yang tersedia di folder induk tidak bertanggal di bucket— gs://dataflow-templates-REGION_NAME/latest/- nama versi, seperti
2023-09-12-00_RC00
, untuk menggunakan versi template tertentu, yang dapat ditemukan bertingkat di folder induk bertanggal masing-masing dalam bucket— gs://dataflow-templates-REGION_NAME/
REGION_NAME
: region tempat Anda ingin men-deploy tugas Dataflow, misalnyaus-central1
BIGTABLE_PROJECT_ID
: project ID tempat Bigtable beradaBIGTABLE_INSTANCE_ID
: ID instance BigtableBIGTABLE_TABLE_ID
: nama tabel Bigtable AndaCASSANDRA_HOSTS
: daftar host Apache Cassandra; jika beberapa host disediakan, ikuti petunjuk tentang cara meng-escape komaCASSANDRA_KEYSPACE
: keyspace Apache Cassandra tempat tabel beradaCASSANDRA_TABLE
: tabel Apache Cassandra yang perlu dimigrasikan
API
Untuk menjalankan template menggunakan REST API, kirim permintaan HTTP POST. Untuk 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 project Google Cloud tempat Anda ingin menjalankan tugas DataflowJOB_NAME
: nama pekerjaan unik pilihan AndaVERSION
: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latest
untuk menggunakan versi terbaru template, yang tersedia di folder induk tidak bertanggal di bucket— gs://dataflow-templates-REGION_NAME/latest/- nama versi, seperti
2023-09-12-00_RC00
, untuk menggunakan versi template tertentu, yang dapat ditemukan bertingkat di folder induk bertanggal masing-masing dalam bucket— gs://dataflow-templates-REGION_NAME/
LOCATION
: region tempat Anda ingin men-deploy tugas Dataflow, misalnyaus-central1
BIGTABLE_PROJECT_ID
: project ID tempat Bigtable beradaBIGTABLE_INSTANCE_ID
: ID instance BigtableBIGTABLE_TABLE_ID
: nama tabel Bigtable AndaCASSANDRA_HOSTS
: daftar host Apache Cassandra; jika beberapa host disediakan, ikuti petunjuk tentang cara meng-escape komaCASSANDRA_KEYSPACE
: keyspace Apache Cassandra tempat tabel beradaCASSANDRA_TABLE
: tabel Apache Cassandra yang perlu dimigrasikan
Langkah selanjutnya
- Pelajari Template Dataflow.
- Lihat daftar template yang disediakan Google.