Template datastream ke Spanner

Template Datastream ke Spanner adalah pipeline streaming yang membaca peristiwa Datastream dari bucket Cloud Storage dan menulisnya ke database Spanner. Ini dimaksudkan untuk migrasi data dari sumber Datastream ke Spanner.

Semua tabel yang diperlukan untuk migrasi harus ada di database Spanner tujuan sebelum eksekusi template. Oleh karena itu, migrasi skema dari database sumber ke Spanner tujuan harus diselesaikan sebelum migrasi data. Data dapat ada di tabel sebelum migrasi. Template ini tidak menerapkan perubahan skema Datastream ke database Spanner.

Konsistensi data hanya dijamin pada akhir migrasi jika semua data telah ditulis ke Spanner. Untuk menyimpan informasi pengurutan setiap kumpulan data yang ditulis ke Spanner, template ini membuat tabel tambahan (yang disebut tabel bayangan) untuk setiap tabel dalam database Spanner. Tindakan ini digunakan untuk memastikan konsistensi pada akhir migrasi. Tabel bayangan tidak dihapus setelah migrasi dan dapat digunakan untuk tujuan validasi di akhir migrasi.

Setiap error yang terjadi selama operasi, seperti ketidakcocokan skema, format file JSON yang salah, atau error yang dihasilkan dari eksekusi transformasi, akan dicatat dalam antrean error. Antrean error adalah folder Cloud Storage yang menyimpan semua peristiwa Datastream yang mengalami error beserta alasan error dalam format teks. Error dapat bersifat sementara atau permanen, dan disimpan dalam folder Cloud Storage yang sesuai dalam antrean error. Error sementara akan dicoba ulang secara otomatis, sedangkan error permanen tidak. Jika terjadi error permanen, Anda memiliki opsi untuk melakukan koreksi pada peristiwa perubahan dan memindahkannya ke bucket yang dapat dicoba lagi selagi template berjalan.

Persyaratan pipeline

  • Aliran Datastream dalam status Berjalan atau Belum dimulai.
  • Bucket Cloud Storage tempat peristiwa Datastream direplikasi.
  • Database Spanner dengan tabel yang sudah ada. Tabel ini dapat kosong atau berisi data.

Parameter template

Parameter Deskripsi
inputFilePattern Lokasi file yang akan direplikasi oleh file Datastream di Cloud Storage. Biasanya, ini adalah jalur root untuk streaming.
streamName Nama atau template aliran data yang akan di-polling untuk informasi skema dan jenis sumber.
instanceId Instance Spanner tempat perubahan direplikasi.
databaseId Database Spanner tempat perubahan direplikasi.
projectId Project ID Spanner.
deadLetterQueueDirectory (Opsional) Ini adalah jalur file untuk menyimpan output antrean error. Defaultnya adalah direktori di bawah lokasi sementara tugas Dataflow.
inputFileFormat (Opsional) Format file output yang dihasilkan oleh Datastream. Misalnya avro,json. Default, avro.
shadowTablePrefix (Opsional) Awalan yang digunakan untuk memberi nama tabel bayangan. Default: shadow_.

Menjalankan template

Konsol

  1. Buka halaman Create job from template Dataflow.
  2. Buka Buat tugas dari template
  3. Di kolom Job name, masukkan nama pekerjaan yang unik.
  4. 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.

  5. Dari menu drop-down Dataflow template, pilih the Cloud Datastream to Spanner template.
  6. Di kolom parameter yang disediakan, masukkan parameter value Anda.
  7. Klik Run job.

gcloud

Di shell atau terminal Anda, jalankan template:

gcloud dataflow flex-template run JOB_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_Datastream_to_Spanner \
    --parameters \
inputFilePattern=GCS_FILE_PATH,\
streamName=STREAM_NAME,\
instanceId=CLOUDSPANNER_INSTANCE,\
databaseId=CLOUDSPANNER_DATABASE,\
deadLetterQueueDirectory=DLQ
  

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud tempat Anda ingin menjalankan tugas Dataflow
  • JOB_NAME: nama pekerjaan unik pilihan Anda
  • REGION_NAME: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • GCS_FILE_PATH: jalur Cloud Storage yang digunakan untuk menyimpan peristiwa aliran data. Contoh: gs://bucket/path/to/data/
  • CLOUDSPANNER_INSTANCE: instance Spanner Anda.
  • CLOUDSPANNER_DATABASE: database Spanner Anda.
  • DLQ: jalur Cloud Storage untuk direktori antrean error.

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/Cloud_Datastream_to_Spanner",
      "parameters": {
          "inputFilePattern": "GCS_FILE_PATH",
          "streamName": "STREAM_NAME"
          "instanceId": "CLOUDSPANNER_INSTANCE"
          "databaseId": "CLOUDSPANNER_DATABASE"
          "deadLetterQueueDirectory": "DLQ"
      }
   }
}
  

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud tempat Anda ingin menjalankan tugas Dataflow
  • JOB_NAME: nama pekerjaan unik pilihan Anda
  • LOCATION: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • GCS_FILE_PATH: jalur Cloud Storage yang digunakan untuk menyimpan peristiwa aliran data. Contoh: gs://bucket/path/to/data/
  • CLOUDSPANNER_INSTANCE: instance Spanner Anda.
  • CLOUDSPANNER_DATABASE: database Spanner Anda.
  • DLQ: jalur Cloud Storage untuk direktori antrean error.

Langkah selanjutnya