Aliran data perubahan Spanner ke template Cloud Storage

Template streaming perubahan Spanner ke Cloud Storage adalah pipeline streaming yang melakukan streaming data perubahan Spanner dan menulisnya ke bucket Cloud Storage menggunakan Dataflow Runner v2.

Pipeline mengelompokkan data aliran perubahan Spanner ke dalam periode berdasarkan stempel waktunya, dengan setiap periode mewakili durasi waktu yang panjangnya dapat Anda konfigurasikan dengan template ini. Semua data dengan stempel waktu yang termasuk dalam periode waktu dijamin berada dalam periode waktu tersebut; tidak boleh ada data yang terlambat. Anda juga dapat menentukan jumlah shard output; pipeline akan membuat satu file output Cloud Storage per periode per shard. Dalam file output, data tidak diurutkan. 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, sink, lokasi file staging, atau lokasi file sementara yang berada di luar region tugas Anda, data Anda mungkin dikirim ke berbagai region. Lihat selengkapnya tentang region Dataflow.

Pelajari lebih lanjut aliran perubahan, cara mem-build 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 sudah ada sebelum menjalankan pipeline.

Parameter template

Parameter yang diperlukan

  • spannerInstanceId : ID instance Spanner untuk membaca data aliran perubahan.
  • spannerDatabase : Database Spanner tempat data aliran perubahan dibaca.
  • spannerMetadataInstanceId : ID instance Spanner yang akan digunakan untuk tabel metadata konektor aliran perubahan.
  • spannerMetadataDatabase : Database Spanner yang akan digunakan untuk tabel metadata konektor aliran data 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. Format DateTime digunakan untuk mengurai jalur direktori untuk pemformat tanggal & waktu. (Contoh: gs://bucket-anda/jalur-anda).

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 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, tabel metadata aliran perubahan Spanner akan otomatis dibuat 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. Misalnya, Ex-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.
  • outputFileFormat : Format file Cloud Storage output. Format yang diizinkan adalah TEXT dan AVRO. Default-nya adalah AVRO.
  • windowDuration : Durasi periode adalah interval saat data ditulis ke direktori output. Konfigurasikan durasi berdasarkan throughput pipeline. Misalnya, throughput yang lebih tinggi mungkin memerlukan ukuran jendela yang lebih kecil agar data sesuai dengan memori. Default-nya adalah 5m (lima menit), dengan minimum 1s (satu detik). Format yang diizinkan adalah: [int]s (untuk detik, contoh: 5d), [int]m (untuk menit, contoh: 12m), [int]h (untuk jam, contoh: 2h). (Contoh: 5 m).
  • rpcPriority : Prioritas permintaan untuk panggilan Spanner. Nilainya harus TINGGI, SEDANG, atau RENDAH. Setelan defaultnya adalah TINGGI.
  • outputFilenamePrefix : Awalan yang akan ditempatkan pada setiap file dengan jendela. (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 meningkatkan biaya agregasi data di seluruh shard saat memproses file Cloud Storage output. Setelan defaultnya adalah: 20.

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 Google Cloud Storage 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_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 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 Cloud Spanner
  • SPANNER_DATABASE: Database Cloud Spanner
  • SPANNER_METADATA_INSTANCE_ID: ID instance metadata Cloud Spanner
  • SPANNER_METADATA_DATABASE: Database metadata Cloud Spanner
  • SPANNER_CHANGE_STREAM: Aliran data perubahan Cloud Spanner
  • GCS_OUTPUT_DIRECTORY: Lokasi file 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",
          "gcsOutputDirectory": "GCS_OUTPUT_DIRECTORY"
      },
      "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Spanner_Change_Streams_to_Google_Cloud_Storage",
   }
}

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 Cloud Spanner
  • SPANNER_DATABASE: Database Cloud Spanner
  • SPANNER_METADATA_INSTANCE_ID: ID instance metadata Cloud Spanner
  • SPANNER_METADATA_DATABASE: Database metadata Cloud Spanner
  • SPANNER_CHANGE_STREAM: Aliran data perubahan Cloud Spanner
  • GCS_OUTPUT_DIRECTORY: Lokasi file untuk output aliran perubahan

Langkah selanjutnya