Template aliran perubahan Spanner ke Pub/Sub adalah pipeline streaming yang melakukan streaming rekaman perubahan data Spanner dan menuliskannya ke topik Pub/Sub menggunakan Portable Runner Dataflow.
Untuk menampilkan data ke topik Pub/Sub baru, Anda harus membuat topik terlebih dahulu. Setelah dibuat, Pub/Sub akan otomatis membuat dan melampirkan langganan ke topik baru. Jika Anda mencoba menampilkan data ke topik Pub/Sub yang tidak ada, pipeline Dataflow akan menampilkan pengecualian, dan pipeline akan macet karena terus mencoba membuat koneksi.
Jika topik Pub/Sub yang diperlukan sudah ada, Anda dapat menampilkan data ke topik tersebut.
Untuk mengetahui informasi selengkapnya, lihat Tentang aliran perubahan, Membangun koneksi aliran perubahan dengan Dataflow, dan Praktik terbaik aliran perubahan.
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.
- Topik Pub/Sub harus ada sebelum menjalankan pipeline.
Parameter template
Parameter yang diperlukan
- spannerInstanceId: Instance Spanner untuk membaca aliran perubahan.
- spannerDatabase: Database Spanner untuk membaca aliran perubahan.
- spannerMetadataInstanceId: 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 perubahan Spanner yang akan dibaca.
- pubsubTopic: Topik Pub/Sub untuk output aliran perubahan.
Parameter opsional
- spannerProjectId: Project untuk membaca aliran perubahan. Project ini juga merupakan tempat tabel metadata konektor aliran perubahan dibuat. Parameter ini secara default adalah project tempat pipeline Dataflow berjalan.
- spannerDatabaseRole: Peran database Spanner yang akan digunakan saat menjalankan template. Parameter ini hanya diperlukan jika principal IAM yang menjalankan template adalah pengguna kontrol akses terperinci. Peran database harus memiliki hak istimewa
SELECTpada aliran perubahan dan hak istimewaEXECUTEpada 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, Spanner akan otomatis membuat tabel metadata konektor aliran selama perubahan alur pipeline. Anda harus memberikan parameter ini saat memperbarui pipeline yang ada. Jangan gunakan parameter ini untuk kasus lain.
- startTimestamp: DateTime awal (https://tools.ietf.org/html/rfc3339), inklusif, yang akan digunakan untuk membaca aliran perubahan. Misalnya, 2021-10-12T07:20:50.52Z. Parameter ini secara default adalah stempel waktu saat pipeline dimulai, yaitu waktu saat ini.
- endTimestamp: DateTime akhir (https://tools.ietf.org/html/rfc3339), inklusif, yang akan digunakan untuk membaca aliran perubahan. Misalnya, 2021-10-12T07:20:50.52Z. Parameter ini secara default adalah waktu tak terbatas di masa mendatang.
- spannerHost: Endpoint Cloud Spanner yang akan dipanggil dalam template. Hanya digunakan untuk pengujian. Contoh,
https://spanner.googleapis.com. Secara default: https://spanner.googleapis.com. - outputDataFormat: Format output. Output dienkapsulasi dalam banyak PubsubMessage dan dikirim ke topik Pub/Sub. Format yang diizinkan adalah JSON dan AVRO. Default-nya adalah JSON.
- pubsubAPI: Pub/Sub API yang digunakan untuk menerapkan pipeline. API yang diizinkan adalah
pubsubiodannative_client. Untuk sejumlah kecil kueri per detik (QPS),native_clientmemiliki latensi yang lebih rendah. Untuk QPS dalam jumlah besar,pubsubiomemberikan performa yang lebih baik dan lebih stabil. Default-nya adalahpubsubio. - pubsubProjectId: Project topik Pub/Sub. Parameter ini secara default adalah project tempat pipeline Dataflow berjalan.
- rpcPriority: Prioritas permintaan untuk panggilan Spanner. Nilai yang diizinkan adalah HIGH, MEDIUM, dan LOW. Default-nya adalah: HIGH).
- includeSpannerSource: Apakah akan menyertakan ID database spanner dan ID instance untuk membaca aliran perubahan dari data pesan output atau tidak. Default-nya adalah: salah.
- outputMessageMetadata: Nilai string untuk kolom kustom outputMessageMetadata dalam pesan pub/sub output. Default-nya adalah kosong dan kolom outputMessageMetadata hanya diisi jika nilai ini tidak kosong. Harap escape karakter khusus saat memasukkan nilai di sini(misalnya: tanda kutip ganda).
- useSpannerEmulatorHost: Apakah akan menggunakan host Spanner yang dikonfigurasi di getSpannerHost() sebagai host Emulator. Default-nya adalah: salah.
- spannerChangeStreamTvfNameList: Daftar nama TVF Aliran Perubahan Spanner yang dipisahkan titik koma untuk dikueri dan digabungkan. Default-nya adalah kosong.
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 Cloud Spanner ke Pub/Sub.
- 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 \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/ \ --region REGION_NAME \ --parameters \ spannerInstanceId=SPANNER_INSTANCE_ID,\ spannerDatabase=SPANNER_DATABASE,\ spannerMetadataInstanceId=SPANNER_METADATA_INSTANCE_ID,\ spannerMetadataDatabase=SPANNER_METADATA_DATABASE,\ spannerChangeStreamName=SPANNER_CHANGE_STREAM,\ pubsubTopic=PUBSUB_TOPIC
Ganti kode berikut:
JOB_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-central1SPANNER_INSTANCE_ID: ID instance SpannerSPANNER_DATABASE: Database SpannerSPANNER_METADATA_INSTANCE_ID: ID instance metadata SpannerSPANNER_METADATA_DATABASE: Database metadata SpannerSPANNER_CHANGE_STREAM: Aliran perubahan SpannerPUBSUB_TOPIC: Topik Pub/Sub untuk output aliran perubahan
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", "parameters": { "spannerInstanceId": "SPANNER_INSTANCE_ID", "spannerDatabase": "SPANNER_DATABASE", "spannerMetadataInstanceId": "SPANNER_METADATA_INSTANCE_ID", "spannerMetadataDatabase": "SPANNER_METADATA_DATABASE", "spannerChangeStreamName": "SPANNER_CHANGE_STREAM", "pubsubTopic": "PUBSUB_TOPIC" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/", } }
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-central1SPANNER_INSTANCE_ID: ID instance SpannerSPANNER_DATABASE: Database SpannerSPANNER_METADATA_INSTANCE_ID: ID instance metadata SpannerSPANNER_METADATA_DATABASE: Database metadata SpannerSPANNER_CHANGE_STREAM: Aliran perubahan SpannerPUBSUB_TOPIC: Topik Pub/Sub untuk output aliran perubahan
Langkah berikutnya
- Pelajari template Dataflow.
- Lihat daftar template yang disediakan Google.