Template streaming perubahan Spanner ke Cloud Storage adalah pipeline streaming yang melakukan streaming rekaman perubahan data Spanner dan menuliskannya ke bucket Cloud Storage menggunakan Dataflow Runner v2.
Pipeline mengelompokkan rekaman aliran perubahan Spanner ke dalam jendela berdasarkan stempel waktunya, dengan setiap jendela merepresentasikan durasi waktu yang panjangnya dapat Anda konfigurasi dengan template ini. Semua rekaman dengan stempel waktu yang termasuk dalam rentang waktu dijamin berada dalam rentang waktu tersebut; tidak ada kedatangan yang terlambat. Anda juga dapat menentukan sejumlah shard output; pipeline membuat satu file output Cloud Storage per jendela per shard. Dalam file output, rekaman tidak berurutan. File output dapat ditulis dalam format JSON atau AVRO, bergantung pada konfigurasi pengguna.
Perhatikan bahwa Anda dapat meminimalkan latensi jaringan dan biaya transportasi jaringan dengan menjalankan tugas Dataflow dari region yang sama dengan instance Spanner atau bucket Cloud Storage Anda. Jika Anda menggunakan sumber, tujuan, lokasi file staging, atau lokasi file sementara yang berada di luar region pekerjaan Anda, data Anda mungkin dikirim ke berbagai region. Lihat informasi selengkapnya tentang region Dataflow.
Pelajari lebih lanjut aliran perubahan, cara membuat pipeline Dataflow aliran perubahan, dan praktik terbaik.
Persyaratan pipeline
- Instance Spanner harus ada sebelum menjalankan pipeline.
- Database Spanner harus ada sebelum menjalankan pipeline.
- Instance metadata Spanner harus ada sebelum menjalankan pipeline.
- Database metadata Spanner harus ada sebelum menjalankan pipeline.
- Aliran perubahan Spanner harus ada sebelum menjalankan pipeline.
- Bucket output Cloud Storage harus ada sebelum menjalankan pipeline.
Parameter template
Parameter yang diperlukan
- spannerInstanceId: ID instance Spanner untuk membaca data aliran perubahan.
- spannerDatabase: Database Spanner untuk membaca data aliran perubahan.
- spannerMetadataInstanceId: ID instance Spanner yang akan digunakan untuk tabel metadata konektor aliran perubahan.
- spannerMetadataDatabase: Database Spanner yang akan digunakan untuk tabel metadata konektor aliran perubahan.
- spannerChangeStreamName: Nama aliran data perubahan Spanner yang akan dibaca.
- gcsOutputDirectory: Awalan jalur dan nama file untuk menulis file output. Harus diakhiri dengan garis miring. Pemformatan DateTime digunakan untuk mengurai jalur direktori untuk pemformat tanggal & waktu. Contoh,
gs://your-bucket/your-path
.
Parameter opsional
- spannerProjectId: ID project Google Cloud yang berisi database Spanner untuk membaca aliran perubahan. Project ini juga merupakan tempat tabel metadata konektor aliran perubahan dibuat. Nilai default untuk parameter ini adalah project tempat pipeline Dataflow berjalan.
- spannerDatabaseRole: Peran database Spanner yang akan digunakan saat menjalankan template. Parameter ini hanya diperlukan jika pokok IAM yang menjalankan template adalah pengguna kontrol akses terperinci. Peran database harus memiliki hak istimewa
SELECT
pada aliran perubahan dan hak istimewaEXECUTE
pada fungsi baca aliran perubahan. Untuk mengetahui informasi selengkapnya, lihat Kontrol akses terperinci untuk aliran perubahan (https://cloud.google.com/spanner/docs/fgac-change-streams). - spannerMetadataTableName: Nama tabel metadata konektor aliran perubahan Spanner yang akan digunakan. Jika tidak disediakan, tabel metadata aliran perubahan Spanner akan dibuat secara otomatis selama eksekusi pipeline. Anda harus memberikan nilai untuk parameter ini saat memperbarui pipeline yang ada. Jika tidak, jangan gunakan parameter ini.
- startTimestamp: DateTime awal, inklusif, yang akan digunakan untuk membaca aliran perubahan, dalam format
Ex-2021-10-12T07:20:50.52Z
. Secara default, stempel waktu saat pipeline dimulai, yaitu waktu saat ini. - endTimestamp: DateTime akhir, inklusif, yang akan digunakan untuk membaca aliran perubahan. Contoh,
Ex-2021-10-12T07:20:50.52Z
. Defaultnya adalah waktu yang tidak terbatas di masa mendatang. - spannerHost: Endpoint Cloud Spanner yang akan dipanggil dalam template. Hanya digunakan untuk pengujian. Contoh,
https://spanner.googleapis.com
. Nilai defaultnya adalah: https://spanner.googleapis.com. - outputFileFormat: Format file Cloud Storage output. Format yang diizinkan adalah
TEXT
danAVRO
. Setelan defaultnya adalahAVRO
. - windowDuration: Durasi jendela adalah interval saat data ditulis ke direktori output. Konfigurasi durasi berdasarkan throughput pipeline. Misalnya, throughput yang lebih tinggi mungkin memerlukan ukuran jendela yang lebih kecil agar data dapat dimuat ke dalam memori. Default-nya adalah 5m (lima menit), dengan minimum 1s (satu detik). Format yang diizinkan adalah: [int]s (untuk detik, contoh: 5s), [int]m (untuk menit, contoh: 12m), [int]h (untuk jam, contoh: 2h). Contoh,
5m
. - rpcPriority: Prioritas permintaan untuk panggilan Spanner. Nilainya harus berupa
HIGH
,MEDIUM
, atauLOW
. Setelan defaultnya adalahHIGH
. - outputFilenamePrefix: Awalan yang akan ditempatkan pada setiap file berwindow. Contoh,
output-
. Defaultnya adalah: output. - numShards: Jumlah maksimum shard output yang dihasilkan saat menulis. Jumlah shard yang lebih tinggi berarti throughput yang lebih tinggi untuk menulis ke Cloud Storage, tetapi berpotensi biaya agregasi data yang lebih tinggi di seluruh shard saat memproses file Cloud Storage output. Defaultnya adalah: 20.
Menjalankan template
Konsol
- Buka halaman Dataflow Create job from 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 the Cloud Spanner change streams to Google Cloud Storage template.
- Di kolom parameter yang disediakan, masukkan nilai parameter Anda.
- Klik Run job.
gcloud
Di shell atau terminal Anda, jalankan template:
gcloud dataflow flex-template run JOB_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Spanner_Change_Streams_to_Google_Cloud_Storage \ --region REGION_NAME \ --parameters \ spannerInstanceId=SPANNER_INSTANCE_ID,\ spannerDatabase=SPANNER_DATABASE,\ spannerMetadataInstanceId=SPANNER_METADATA_INSTANCE_ID,\ spannerMetadataDatabase=SPANNER_METADATA_DATABASE,\ spannerChangeStreamName=SPANNER_CHANGE_STREAM,\ gcsOutputDirectory=GCS_OUTPUT_DIRECTORY
Ganti kode berikut:
JOB_NAME
: nama tugas unik pilihan AndaVERSION
: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latest
untuk menggunakan versi template 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 versi template tertentu, yang dapat ditemukan bertingkat di folder induk yang diberi tanggal di bucket— gs://dataflow-templates-REGION_NAME/
REGION_NAME
: region tempat Anda ingin men-deploy tugas Dataflow—misalnya,us-central1
SPANNER_INSTANCE_ID
: ID instance Cloud SpannerSPANNER_DATABASE
: Database Cloud SpannerSPANNER_METADATA_INSTANCE_ID
: ID instance metadata Cloud SpannerSPANNER_METADATA_DATABASE
: Database metadata Cloud SpannerSPANNER_CHANGE_STREAM
: Aliran data perubahan Cloud SpannerGCS_OUTPUT_DIRECTORY
: Lokasi file untuk output aliran perubahan
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/flexTemplates:launch { "launch_parameter": { "jobName": "JOB_NAME", "parameters": { "spannerInstanceId": "SPANNER_INSTANCE_ID", "spannerDatabase": "SPANNER_DATABASE", "spannerMetadataInstanceId": "SPANNER_METADATA_INSTANCE_ID", "spannerMetadataDatabase": "SPANNER_METADATA_DATABASE", "spannerChangeStreamName": "SPANNER_CHANGE_STREAM", "gcsOutputDirectory": "GCS_OUTPUT_DIRECTORY" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Spanner_Change_Streams_to_Google_Cloud_Storage", } }
Ganti kode berikut:
PROJECT_ID
: ID Google Cloud project tempat Anda ingin menjalankan tugas DataflowJOB_NAME
: nama tugas unik pilihan AndaVERSION
: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latest
untuk menggunakan versi template 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 versi template tertentu, yang dapat ditemukan bertingkat di folder induk yang diberi tanggal di bucket— gs://dataflow-templates-REGION_NAME/
LOCATION
: region tempat Anda ingin men-deploy tugas Dataflow—misalnya,us-central1
SPANNER_INSTANCE_ID
: ID instance Cloud SpannerSPANNER_DATABASE
: Database Cloud SpannerSPANNER_METADATA_INSTANCE_ID
: ID instance metadata Cloud SpannerSPANNER_METADATA_DATABASE
: Database metadata Cloud SpannerSPANNER_CHANGE_STREAM
: Aliran data perubahan Cloud SpannerGCS_OUTPUT_DIRECTORY
: Lokasi file untuk output aliran perubahan
Langkah berikutnya
- Pelajari template Dataflow.
- Lihat daftar template yang disediakan Google.