Template aliran perubahan Bigtable ke BigQuery adalah pipeline streaming yang menstreaming data Bigtable mengubah rekaman dan menuliskannya ke tabel BigQuery menggunakan Dataflow.
Aliran perubahan Bigtable memungkinkan Anda berlangganan mutasi data per tabel. Saat Anda berlangganan aliran perubahan tabel, batasan berikut berlaku:
- Hanya sel dan deskriptor yang diubah dari operasi penghapusan yang ditampilkan.
- Hanya nilai baru sel yang diubah yang ditampilkan.
Saat rekaman perubahan data ditulis ke BigQuery, baris mungkin disisipkan di luar urutan dibandingkan dengan urutan stempel waktu commit Bigtable asli.
Baris tabel log perubahan yang tidak dapat ditulis ke BigQuery karena error persisten akan ditempatkan secara permanen ke direktori antrean pesan yang tidak terkirim (antrean pesan yang tidak diproses) di Cloud Storage untuk ditinjau oleh manusia atau diproses lebih lanjut oleh pengguna.
Jika tabel BigQuery yang diperlukan tidak ada, pipeline akan membuatnya. Jika tidak, tabel BigQuery yang ada akan digunakan. Skema tabel BigQuery yang ada harus berisi kolom dalam tabel berikut.
Setiap baris BigQuery baru menyertakan satu rekaman perubahan data yang ditampilkan oleh aliran perubahan dari baris yang sesuai di tabel Bigtable Anda.
Skema tabel output BigQuery
| Nama kolom | Jenis | Nullable | Deskripsi |
|---|---|---|---|
row_key |
STRING atau BYTES |
Tidak | Kunci baris dari baris yang diubah. Jika opsi pipeline writeRowkeyAsBytes ditetapkan ke true, jenis kolom harus BYTES. Jika tidak, gunakan jenis STRING. |
mod_type |
STRING |
Tidak | Jenis mutasi baris. Gunakan salah satu nilai berikut: SET_CELL, DELETE_CELLS, atau DELETE_FAMILY. |
column_family |
STRING |
Tidak | Grup kolom yang terpengaruh oleh mutasi baris. |
column |
STRING |
Ya | Penentu kolom yang terpengaruh oleh mutasi baris. Untuk jenis mutasi DELETE_FAMILY, tetapkan ke NULL. |
commit_timestamp |
TIMESTAMP |
Tidak | Waktu saat Bigtable menerapkan mutasi. |
big_query_commit_timestamp |
TIMESTAMP |
Ya | Opsional: Menentukan waktu saat BigQuery menulis baris ke tabel output. Kolom tidak diisi jika nama kolom ada dalam nilai opsi pipeline bigQueryChangelogTableFieldsToIgnore. |
timestamp |
TIMESTAMP atau INT64 |
Ya | Nilai stempel waktu sel yang terpengaruh oleh mutasi. Jika opsi pipeline writeNumericTimestamps ditetapkan ke true, jenis kolom harus INT64. Jika tidak, gunakan jenis TIMESTAMP.
Untuk jenis mutasi DELETE_CELLS dan DELETE_FAMILY, tetapkan ke NULL. |
timestamp_from |
TIMESTAMP atau INT64 |
Ya | Menjelaskan awal inklusif interval stempel waktu untuk semua sel yang dihapus oleh mutasi DELETE_CELLS. Untuk jenis mutasi lainnya, tetapkan ke NULL. |
timestamp_to |
TIMESTAMP atau INT64 |
Ya | Menjelaskan akhir eksklusif interval stempel waktu untuk semua sel yang dihapus oleh mutasi DELETE_CELLS. Untuk jenis mutasi lainnya, tetapkan ke NULL. |
is_gc |
BOOL |
Tidak | Opsional: Jika mutasi dipicu oleh kebijakan pembersihan sampah memori, tetapkan ke true.
Dalam semua kasus lainnya, tetapkan ke false. Kolom tidak diisi jika nama kolom ada dalam nilai opsi pipeline bigQueryChangelogTableFieldsToIgnore. |
source_instance |
STRING |
Tidak | Opsional: Menjelaskan nama instance Bigtable tempat mutasi berasal. Kolom tidak diisi jika nama kolom ada dalam nilai opsi pipeline bigQueryChangelogTableFieldsToIgnore. |
source_cluster |
STRING |
Tidak | Opsional: Menjelaskan nama cluster Bigtable tempat mutasi berasal. Kolom tidak diisi jika nama kolom ada dalam nilai opsi pipeline bigQueryChangelogTableFieldsToIgnore. |
source_table |
STRING |
Tidak | Opsional: Menjelaskan nama tabel Bigtable tempat mutasi diterapkan. Nilai di kolom ini mungkin berguna jika beberapa tabel Bigtable menstreaming perubahan ke tabel BigQuery yang sama. Kolom tidak diisi jika nama kolom ada dalam nilai opsi pipeline bigQueryChangelogTableFieldsToIgnore. |
tiebreaker |
INT64 |
Tidak | Opsional: Jika dua mutasi didaftarkan pada waktu yang sama oleh cluster Bigtable yang berbeda, mutasi dengan nilai tiebreaker tertinggi akan diterapkan ke tabel sumber. Mutasi dengan nilai tiebreaker yang lebih rendah akan dihapus. Kolom tidak diisi jika nama kolom ada dalam nilai opsi pipeline bigQueryChangelogTableFieldsToIgnore. |
value |
STRING atau BYTES |
Ya | Nilai baru yang ditetapkan oleh mutasi. Jika opsi pipeline writeValuesAsBytes ditetapkan ke true, jenis kolom harus BYTES. Jika tidak, gunakan jenis STRING. Nilai ditetapkan untuk mutasi SET_CELL. Untuk jenis mutasi lainnya, nilai ditetapkan ke NULL. |
Persyaratan pipeline
- Instance sumber Bigtable yang ditentukan.
- Tabel sumber Bigtable yang ditentukan. Tabel harus mengaktifkan aliran perubahan.
- Profil aplikasi Bigtable yang ditentukan.
- Set data tujuan BigQuery yang ditentukan.
Parameter template
Parameter yang diperlukan
- bigQueryDataset: Nama set data tabel BigQuery tujuan.
- bigtableChangeStreamAppProfile: ID profil aplikasi Bigtable. Profil aplikasi harus menggunakan perutean cluster tunggal dan mengizinkan transaksi satu baris.
- bigtableReadInstanceId: ID instance Bigtable sumber.
- bigtableReadTableId: ID tabel Bigtable sumber.
Parameter opsional
- writeRowkeyAsBytes: Apakah akan menulis kunci baris sebagai BigQuery
BYTES. Jika ditetapkan ketrue, kunci baris akan ditulis ke kolomBYTES. Jika tidak, kunci baris akan ditulis ke kolomSTRING. Nilai defaultnya adalahfalse. - writeValuesAsBytes: Jika ditetapkan ke
true, nilai akan ditulis ke kolom berjenis BYTES, jika tidak, ke kolom berjenis STRING . Setelan defaultnya adalah:false. - writeNumericTimestamps: Apakah akan menulis stempel waktu Bigtable sebagai INT64 BigQuery. Jika ditetapkan ke
true, nilai akan ditulis ke kolom INT64. Jika tidak, nilai akan ditulis ke kolomTIMESTAMP. Kolom yang terpengaruh:timestamp,timestamp_from, dantimestamp_to. Nilai defaultnya adalahfalse. Jika ditetapkan ketrue, waktu akan diukur dalam mikrodetik sejak epoch Unix (1 Januari 1970 pukul UTC). - bigQueryProjectId: Project ID set data BigQuery. Default-nya adalah project untuk tugas Dataflow.
- bigQueryChangelogTableName: Nama tabel BigQuery tujuan. Jika tidak ditentukan, nilai
bigtableReadTableId + "_changelog"akan digunakan. Nilai defaultnya adalah kosong. - bigQueryChangelogTablePartitionGranularity: Menentukan granularitas untuk mempartisi tabel log perubahan. Jika ditetapkan, tabel akan dipartisi. Gunakan salah satu nilai yang didukung berikut:
HOUR,DAY,MONTH, atauYEAR. Secara default, tabel tidak dipartisi. - bigQueryChangelogTablePartitionExpirationMs: Menetapkan waktu habis masa berlaku partisi tabel log perubahan, dalam milidetik. Jika ditetapkan ke
true, partisi yang lebih lama dari jumlah milidetik yang ditentukan akan dihapus. Secara default, tidak ada waktu habis masa berlaku yang ditetapkan. - bigQueryChangelogTableFieldsToIgnore: Daftar kolom log perubahan yang dipisahkan koma yang, jika ditentukan, tidak dibuat dan diisi. Gunakan salah satu nilai yang didukung berikut:
is_gc,source_instance,source_cluster,source_table,tiebreaker, ataubig_query_commit_timestamp. Secara default, semua kolom akan diisi. - dlqDirectory: Direktori yang akan digunakan untuk antrean pesan yang tidak terkirim. Rekaman yang gagal diproses akan disimpan di direktori ini. Default-nya adalah direktori di lokasi temp tugas Dataflow. Dalam sebagian besar kasus, Anda dapat menggunakan jalur default.
- bigtableChangeStreamMetadataInstanceId: ID instance metadata aliran perubahan Bigtable. Nilai defaultnya adalah kosong.
- bigtableChangeStreamMetadataTableTableId: ID tabel metadata konektor aliran perubahan Bigtable. Jika tidak diberikan, tabel metadata konektor aliran perubahan Bigtable akan dibuat secara otomatis selama eksekusi pipeline. Nilai defaultnya adalah kosong.
- bigtableChangeStreamCharset: Nama charset aliran perubahan Bigtable. Setelan defaultnya adalah: UTF-8.
- bigtableChangeStreamStartTimestamp: Stempel waktu awal (https://tools.ietf.org/html/rfc3339), inklusif, yang akan digunakan untuk membaca aliran perubahan. Misalnya,
2022-05-05T07:59:59Z. Default-nya adalah stempel waktu waktu mulai pipeline. - bigtableChangeStreamIgnoreColumnFamilies: Daftar nama grup kolom yang dipisahkan koma untuk diabaikan. Nilai defaultnya adalah kosong.
- bigtableChangeStreamIgnoreColumns: Daftar nama kolom yang dipisahkan koma untuk diabaikan. Contoh: "cf1:col1,cf2:col2". Nilai defaultnya adalah kosong.
- bigtableChangeStreamName: Nama unik untuk pipeline klien. Memungkinkan Anda melanjutkan pemrosesan dari titik saat pipeline yang sebelumnya berjalan berhenti. Default-nya adalah nama yang dibuat secara otomatis. Lihat log tugas Dataflow untuk mengetahui nilai yang digunakan.
- bigtableChangeStreamResume: Jika ditetapkan ke
true, pipeline baru akan melanjutkan pemrosesan dari titik saat pipeline yang sebelumnya berjalan dengan nilaibigtableChangeStreamNameyang sama berhenti. Jika pipeline dengan nilaibigtableChangeStreamNameyang diberikan belum pernah berjalan, pipeline baru tidak akan dimulai. Jika ditetapkan kefalse, pipeline baru akan dimulai. Jika pipeline dengan nilaibigtableChangeStreamNameyang sama telah berjalan untuk sumber yang diberikan, pipeline baru tidak akan dimulai. Nilai defaultnya adalahfalse. - bigtableReadChangeStreamTimeoutMs: Waktu tunggu untuk permintaan Bigtable ReadChangeStream dalam milidetik.
- bigtableReadProjectId: Project ID Bigtable. Default-nya adalah project untuk tugas Dataflow.
Menjalankan template
Konsol
- Buka halaman Dataflow Membuat tugas dari template. Buka Membuat tugas dari template
- Di kolom Nama tugas, masukkan nama tugas yang unik.
- 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.
- Dari menu drop-down Template Dataflow, pilih template Aliran perubahan Bigtable ke BigQuery.
- Di kolom parameter yang disediakan, masukkan nilai parameter Anda.
- Klik Jalankan tugas.
gcloud
Di shell atau terminal Anda, jalankan template:
gcloud dataflow flex-template run JOB_NAME \ --region=REGION_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Bigtable_Change_Streams_to_BigQuery \ --parameters \ bigtableReadInstanceId=BIGTABLE_INSTANCE_ID,\ bigtableReadTableId=BIGTABLE_TABLE_ID,\ bigtableChangeStreamAppProfile=BIGTABLE_APPLICATION_PROFILE_ID,\ bigQueryDataset=BIGQUERY_DESTINATION_DATASET
Ganti kode berikut:
PROJECT_ID: Google Cloud Project ID tempat Anda ingin menjalankan tugas DataflowJOB_NAME: nama tugas unik pilihan AndaVERSION: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latestuntuk menggunakan template versi terbaru, yang tersedia di folder induk tanpa tanggal di bucket—gs://dataflow-templates-REGION_NAME/latest/- nama versi, seperti
2023-09-12-00_RC00, untuk menggunakan template versi tertentu, yang dapat ditemukan bertingkat di masing-masing folder induk yang diberi tanggal dalam bucket—gs://dataflow-templates-REGION_NAME/
REGION_NAME: region tempat Anda ingin men-deploy tugas Dataflow—misalnya,us-central1BIGTABLE_INSTANCE_ID: ID instance Bigtable Anda.BIGTABLE_TABLE_ID: ID tabel Bigtable Anda.BIGTABLE_APPLICATION_PROFILE_ID: ID profil aplikasi Bigtable Anda.BIGQUERY_DESTINATION_DATASET: nama set data tujuan BigQuery
API
Untuk menjalankan template menggunakan REST API, kirim permintaan POST HTTP. Untuk mengetahui informasi selengkapnya tentang API dan cakupan otorisasinya, lihat projects.templates.launch.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "launch_parameter": { "jobName": "JOB_NAME", "containerSpecGcsPath": "gs://dataflow-templates-REGION_NAME/VERSION/flex/Bigtable_Change_Streams_to_BigQuery", "parameters": { "bigtableReadInstanceId": "BIGTABLE_INSTANCE_ID", "bigtableReadTableId": "BIGTABLE_TABLE_ID", "bigtableChangeStreamAppProfile": "BIGTABLE_APPLICATION_PROFILE_ID", "bigQueryDataset": "BIGQUERY_DESTINATION_DATASET" } } }
Ganti kode berikut:
PROJECT_ID: Google Cloud Project ID tempat Anda ingin menjalankan tugas DataflowJOB_NAME: nama tugas unik pilihan AndaVERSION: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latestuntuk menggunakan template versi terbaru, yang tersedia di folder induk tanpa tanggal di bucket—gs://dataflow-templates-REGION_NAME/latest/- nama versi, seperti
2023-09-12-00_RC00, untuk menggunakan template versi tertentu, yang dapat ditemukan bertingkat di masing-masing folder induk yang diberi tanggal dalam bucket—gs://dataflow-templates-REGION_NAME/
LOCATION: region tempat Anda ingin men-deploy tugas Dataflow—misalnya,us-central1BIGTABLE_INSTANCE_ID: ID instance Bigtable Anda.BIGTABLE_TABLE_ID: ID tabel Bigtable Anda.BIGTABLE_APPLICATION_PROFILE_ID: ID profil aplikasi Bigtable Anda.BIGQUERY_DESTINATION_DATASET: nama set data tujuan BigQuery
Langkah berikutnya
- Pelajari template Dataflow.
- Lihat daftar template yang disediakan Google.