Aliran data perubahan Bigtable ke template BigQuery adalah pipeline streaming yang mengalirkan kumpulan data perubahan data Bigtable dan menulisnya ke dalam tabel BigQuery menggunakan Dataflow.
Aliran perubahan Bigtable memungkinkan Anda berlangganan mutasi data per tabel. Jika Anda berlangganan aliran data perubahan tabel, batasan berikut akan berlaku:
- Hanya sel yang dimodifikasi dan deskriptor dari operasi penghapusan yang ditampilkan.
- Hanya nilai baru dari sel yang dimodifikasi yang dikembalikan.
Ketika kumpulan data perubahan data ditulis ke BigQuery, baris mungkin disisipkan secara tidak berurutan dibandingkan dengan pengurutan stempel waktu commit Bigtable asli.
Baris tabel log perubahan yang tidak dapat ditulis ke BigQuery karena error persisten akan ditempatkan secara permanen ke dalam direktori antrean yang dihentikan pengirimannya (antrean pesan yang belum diproses) di Cloud Storage untuk ditinjau secara manual atau diproses lebih lanjut oleh pengguna.
Jika tabel BigQuery yang diperlukan tidak ada, pipeline akan membuatnya. Jika tidak, tabel BigQuery yang sudah ada akan digunakan. Skema tabel BigQuery yang ada harus berisi kolom dalam tabel berikut.
Setiap baris BigQuery baru menyertakan satu kumpulan data 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 | Tombol baris untuk 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 ketika Bigtable menerapkan mutasi. |
big_query_commit_timestamp |
TIMESTAMP |
Ya | Opsional: Menentukan waktu saat BigQuery menulis baris ke tabel output. Kolom ini tidak diisi jika nama kolom ada di 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 lain, tetapkan ke false . Kolom ini tidak diisi saat nama kolom ada di nilai opsi pipeline bigQueryChangelogTableFieldsToIgnore . |
source_instance |
STRING |
Tidak | Opsional: Menjelaskan nama instance Bigtable tempat mutasi berasal. Kolom ini tidak diisi saat nama kolom ada di nilai opsi pipeline bigQueryChangelogTableFieldsToIgnore . |
source_cluster |
STRING |
Tidak | Opsional: Menjelaskan nama cluster Bigtable tempat mutasi berasal. Kolom ini tidak diisi saat nama kolom ada di 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 melakukan perubahan ke tabel BigQuery yang sama. Kolom ini tidak diisi saat nama kolom ada di nilai opsi pipeline bigQueryChangelogTableFieldsToIgnore . |
tiebreaker |
INT64 |
Tidak | Opsional: Jika dua mutasi didaftarkan secara bersamaan oleh cluster Bigtable berbeda, mutasi dengan nilai tiebreaker tertinggi akan diterapkan ke tabel sumber. Mutasi dengan nilai tiebreaker yang lebih rendah akan dihapus. Kolom ini tidak diisi saat nama kolom ada di 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 data.
- Profil aplikasi Bigtable yang ditentukan.
- Set data tujuan BigQuery yang ditentukan.
Parameter template
Parameter | Deskripsi |
---|---|
bigtableReadInstanceId |
ID instance Bigtable sumber. |
bigtableReadTableId |
ID tabel Bigtable sumber. |
bigtableChangeStreamAppProfile |
ID profil aplikasi Bigtable. Profil aplikasi harus menggunakan perutean cluster tunggal dan mengizinkan transaksi baris tunggal. |
bigQueryDataset |
Nama set data tabel BigQuery tujuan. |
writeNumericTimestamps |
Opsional: Tulis stempel waktu Bigtable sebagai INT64 BigQuery. Jika ditetapkan ke true , nilai akan dituliskan ke kolom INT64 . Jika tidak, nilai akan ditulis ke kolom TIMESTAMP . Kolom yang terpengaruh: timestamp , timestamp_from , dan timestamp_to . Nilai defaultnya adalah false . Jika disetel ke true , waktu akan diukur dalam mikrodetik sejak epoch Unix (1 Januari 1970 pada UTC). |
writeRowkeyAsBytes |
Opsional: Tulis rowkey sebagai BigQuery BYTES . Jika ditetapkan ke true , tombol baris akan ditulis ke kolom BYTES . Jika tidak, rowkey akan ditulis ke kolom STRING . Setelan defaultnya adalah false . |
writeValuesAsBytes |
Opsional: Tulis nilai sebagai BigQuery BYTES . Jika ditetapkan ke true , nilai akan dituliskan ke kolom BYTES . Jika tidak, nilai akan ditulis ke kolom STRING . Setelan defaultnya adalah false . |
bigQueryChangelogTableName |
Opsional: Nama tabel BigQuery tujuan. Jika tidak ditentukan, nilai bigtableReadTableId + "_changelog" akan digunakan |
bigQueryProjectId |
Opsional: Project ID set data BigQuery. Defaultnya adalah project untuk tugas Dataflow. |
bigtableReadProjectId |
Opsional: Project ID Bigtable. Defaultnya adalah project untuk tugas Dataflow. |
bigtableChangeStreamMetadataInstanceId |
Opsional: Perubahan Bigtable melakukan streaming ID instance metadata. |
bigtableChangeStreamMetadataTableTableId |
Opsional: Perubahan Bigtable melakukan streaming ID tabel metadata. |
bigtableChangeStreamCharset |
Opsional: Perubahan Bigtable mengalirkan nama charset saat membaca nilai dan penentu kolom. |
bigtableChangeStreamStartTimestamp |
Opsional: Stempel waktu awal, inklusif, yang akan digunakan untuk membaca aliran perubahan. Contoh, 2022-05-05T07:59:59Z . Setelan defaultnya adalah stempel waktu waktu mulai pipeline. |
bigtableChangeStreamIgnoreColumnFamilies |
Opsional: Daftar yang dipisahkan koma untuk nama grup kolom yang akan diabaikan akan diabaikan. |
bigtableChangeStreamIgnoreColumns |
Opsional: Daftar yang dipisahkan koma untuk perubahan nama kolom yang akan diabaikan. |
bigtableChangeStreamName |
Opsional: Nama unik untuk pipeline klien. Memungkinkan Anda melanjutkan pemrosesan dari titik penghentian pipeline yang berjalan sebelumnya. Setelan defaultnya adalah nama yang dibuat secara otomatis. Lihat log tugas Dataflow untuk mengetahui nilai yang digunakan. |
bigtableChangeStreamResume |
Opsional: Jika ditetapkan ke true , pipeline baru akan melanjutkan pemrosesan dari titik saat pipeline yang sebelumnya berjalan dengan nilai bigtableChangeStreamName yang sama dihentikan.
Jika pipeline dengan nilai bigtableChangeStreamName yang diberikan belum pernah berjalan, pipeline baru tidak akan dimulai.
Jika ditetapkan ke false , pipeline baru akan dimulai. Jika pipeline dengan nilai bigtableChangeStreamName yang sama
telah berjalan untuk sumber tertentu, pipeline baru tidak akan dimulai. Nilai default-nya adalah false . |
bigQueryChangelogTableFieldsToIgnore |
Opsional: Daftar yang dipisahkan koma untuk kolom log perubahan yang, jika ditentukan, tidak dibuat dan diisi. Gunakan salah satu nilai yang didukung berikut: is_gc , source_instance , source_cluster , source_table , tiebreaker , atau big_query_commit_timestamp . Secara default, semua kolom telah diisi. |
bigQueryChangelogTablePartitionExpirationMs |
Opsional: 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 tanggal habis masa berlaku yang ditetapkan. |
bigQueryChangelogTablePartitionGranularity |
Opsional: Menentukan perincian untuk mempartisi tabel log perubahan. Jika ditetapkan, tabel akan dipartisi. Gunakan salah satu nilai yang didukung berikut: HOUR , DAY , MONTH , atau YEAR . Secara default, tabel tidak dipartisi. |
dlqDirectory |
Opsional: Direktori untuk antrean yang dihentikan pengirimannya. Kumpulan data yang gagal diproses akan disimpan di direktori ini. Defaultnya adalah direktori di bawah lokasi sementara tugas Dataflow. Pada umumnya, Anda dapat menggunakan jalur default. |
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 Bigtable change streams to BigQuery template.
- Di kolom parameter yang disediakan, masukkan parameter value Anda.
- Klik Run job.
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
: 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/
REGION_NAME
: region tempat Anda ingin men-deploy tugas Dataflow, misalnyaus-central1
BIGTABLE_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 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/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
: 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_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 selanjutnya
- Pelajari Template Dataflow.
- Lihat daftar template yang disediakan Google.