Template streaming perubahan Spanner ke Pub/Sub

Streaming perubahan Spanner ke template Pub/Sub adalah pipeline streaming yang melakukan streaming data perubahan Spanner dan menulisnya ke topik Pub/Sub menggunakan Dataflow Runner V2.

Untuk menampilkan data ke topik Pub/Sub baru, Anda harus membuat topik terlebih dahulu. Setelah pembuatan, Pub/Sub akan otomatis membuat dan melampirkan langganan ke topik baru. Jika Anda mencoba menghasilkan output 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 menghasilkan output data ke topik tersebut.

Untuk mengetahui informasi selengkapnya, lihat Tentang aliran perubahan, Mem-build 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 tempat membaca aliran data perubahan.
  • spannerDatabase : Database Spanner tempat membaca aliran data perubahan.
  • spannerMetadataInstanceId : Instance Spanner yang akan digunakan untuk tabel metadata konektor aliran data perubahan.
  • spannerMetadataDatabase : Database Spanner yang akan digunakan untuk tabel metadata konektor aliran data perubahan.
  • spannerChangeStreamName : Nama aliran data perubahan Spanner yang akan dibaca.
  • pubsubTopic : Topik Pub/Sub untuk output aliran perubahan.

Parameter opsional

  • spannerProjectId : Project tempat aliran data perubahan dibaca. Project ini juga merupakan tempat tabel metadata konektor aliran perubahan dibuat. 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 akun utama IAM yang menjalankan template adalah pengguna kontrol akses terperinci. Peran database harus memiliki hak istimewa SELECT di aliran perubahan dan hak istimewa EXECUTE di 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 data selama perubahan alur pipeline. Anda harus memberikan parameter ini saat memperbarui pipeline yang ada. Jangan gunakan parameter ini untuk kasus lainnya.
  • startTimestamp : DateTime awal (https://tools.ietf.org/html/rfc3339), inklusif, untuk digunakan membaca aliran perubahan. Misalnya, contoh- 2021-10-12T07:20:50.52Z. Secara default, stempel waktu saat pipeline dimulai, yaitu waktu saat ini.
  • endTimestamp : DateTime akhir (https://tools.ietf.org/html/rfc3339), inklusif, untuk digunakan membaca aliran perubahan. Misalnya, contoh- 2021-10-12T07:20:50.52Z. Defaultnya 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 digabungkan dalam banyak PubsubMessages 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 pubsubio dan native_client. Untuk sejumlah kecil kueri per detik (QPS), native_client memiliki latensi yang lebih rendah. Untuk QPS dalam jumlah besar, pubsubio memberikan performa yang lebih baik dan lebih stabil. Defaultnya adalah pubsubio.
  • pubsubProjectId : Project topik Pub/Sub. Default untuk parameter ini adalah project tempat pipeline Dataflow berjalan.
  • rpcPriority : Prioritas permintaan untuk panggilan Spanner. Nilai yang diizinkan adalah TINGGI, SEDANG, dan RENDAH. Defaultnya adalah: TINGGI).
  • includeSpannerSource : Apakah akan menyertakan ID database dan ID instance spanner untuk membaca aliran perubahan dalam data pesan output atau tidak. Defaultnya adalah: false.
  • outputMessageMetadata : Nilai string untuk kolom kustom outputMessageMetadata dalam pesan pub/sub output. Nilai defaultnya kosong dan kolom outputMessageMetadata hanya diisi jika nilai ini tidak kosong. Escape karakter khusus apa pun saat memasukkan nilai di sini(yaitu: tanda kutip ganda).

Menjalankan template

Konsol

  1. Buka halaman Create job from template Dataflow.
  2. Buka Buat tugas dari template
  3. Di kolom Nama tugas, masukkan nama tugas yang unik.
  4. Opsional: Untuk Endpoint regional, pilih nilai dari menu drop-down. Region defaultnya adalah us-central1.

    Untuk mengetahui daftar region tempat Anda dapat menjalankan tugas Dataflow, lihat Lokasi Dataflow.

  5. Dari menu drop-down Dataflow template, pilih the Cloud Spanner change streams to Pub/Sub template.
  6. Di kolom parameter yang disediakan, masukkan nilai parameter Anda.
  7. Klik Run job.

gcloud

Di shell atau terminal, jalankan template:

    gcloud dataflow flex-template run JOB_NAME \
        --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Spanner_Change_Streams_to_PubSub \
        --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 Anda
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • REGION_NAME: region tempat Anda ingin men-deploy tugas Dataflow—misalnya, us-central1
  • SPANNER_INSTANCE_ID: ID instance Spanner
  • SPANNER_DATABASE: Database Spanner
  • SPANNER_METADATA_INSTANCE_ID: ID instance metadata Spanner
  • SPANNER_METADATA_DATABASE: Database metadata Spanner
  • SPANNER_CHANGE_STREAM: Aliran data perubahan Spanner
  • PUBSUB_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/Spanner_Change_Streams_to_PubSub",
    }
  }
  

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud tempat Anda ingin menjalankan tugas Dataflow
  • JOB_NAME: nama tugas unik pilihan Anda
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • LOCATION: region tempat Anda ingin men-deploy tugas Dataflow—misalnya, us-central1
  • SPANNER_INSTANCE_ID: ID instance Spanner
  • SPANNER_DATABASE: Database Spanner
  • SPANNER_METADATA_INSTANCE_ID: ID instance metadata Spanner
  • SPANNER_METADATA_DATABASE: Database metadata Spanner
  • SPANNER_CHANGE_STREAM: Aliran data perubahan Spanner
  • PUBSUB_TOPIC: Topik Pub/Sub untuk output aliran perubahan

Langkah selanjutnya