Template Validasi Data Cloud Storage Avro ke Spanner

Template Validasi Data file Avro Cloud Storage ke Spanner adalah pipeline batch yang membaca data dari Cloud Storage dan Spanner, lalu membandingkannya untuk memvalidasi kebenaran migrasi.

Persyaratan pipeline

  • Direktori Cloud Storage untuk file Avro harus ada sebelum eksekusi pipeline. Buat file Avro ini dengan menjalankan pipeline SourceDB to Cloud Spanner dengan parameter gcsOutputDirectory.
  • Set data BigQuery target untuk hasil validasi harus ada sebelum eksekusi pipeline.
  • Tabel Spanner harus ada sebelum eksekusi pipeline.
  • Tabel Spanner harus memiliki skema yang kompatibel (baik secara langsung maupun melalui pemetaan skema).
  • Untuk memvalidasi migrasi yang dilakukan oleh pipeline SourceDB ke Cloud Spanner, Anda harus meneruskan nilai yang identik untuk konfigurasi bersama (seperti sessionFilePath, schemaOverridesFilePath, dan transformationJarPath).

Parameter template

Parameter yang diperlukan

  • gcsInputDirectory: Direktori ini digunakan untuk membaca file AVRO dari data yang dibaca dari sumber. Contoh, gs://your-bucket/your-path.
  • projectId: Ini adalah nama project Cloud Spanner.
  • instanceId: Instance Cloud Spanner tujuan.
  • databaseId: Database Cloud Spanner tujuan.
  • bigQueryDataset: ID set data BigQuery tempat hasil validasi akan disimpan. Contoh, validation_report_dataset.

Parameter opsional

  • spannerHost: Endpoint Cloud Spanner yang akan dipanggil dalam template. Contoh, https://batch-spanner.googleapis.com. Secara default: https://batch-spanner.googleapis.com.
  • spannerPriority: Prioritas permintaan untuk panggilan Cloud Spanner. Nilai harus berupa salah satu dari: [HIGH,MEDIUM,LOW]. Defaultnya adalah HIGH.
  • sessionFilePath: Jalur file sesi di Cloud Storage yang berisi informasi pemetaan dari Spanner Migration Tool. Nilai defaultnya adalah kosong.
  • schemaOverridesFilePath: File yang menentukan penggantian nama tabel dan kolom dari sumber ke Spanner. Nilai defaultnya adalah kosong.
  • tableOverrides: Ini adalah penggantian nama tabel dari sumber ke Spanner. Tabel ini ditulis dalam format berikut: [{SourceTableName1, SpannerTableName1}, {SourceTableName2, SpannerTableName2}] Contoh ini menunjukkan pemetaan tabel Singers ke Vocalists dan tabel Albums ke Records. Contoh, [{Singers, Vocalists}, {Albums, Records}]. Nilai defaultnya adalah kosong.
  • columnOverrides: Ini adalah penggantian nama kolom dari sumber ke spanner. Kolom tersebut ditulis dalam format berikut: [{SourceTableName1.SourceColumnName1, SourceTableName1.SpannerColumnName1}, {SourceTableName2.SourceColumnName1, SourceTableName2.SpannerColumnName1}]. Perhatikan bahwa SourceTableName harus tetap sama di pasangan sumber dan spanner. Untuk mengganti nama tabel, gunakan tableOverrides.Contoh ini menunjukkan pemetaan SingerName ke TalentName dan AlbumName ke RecordName dalam tabel Singers dan Albums. Contoh, [{Singers.SingerName, Singers.TalentName}, {Albums.AlbumName, Albums.RecordName}]. Nilai defaultnya adalah kosong.
  • runId: ID unik untuk proses validasi. Jika tidak disediakan, Nama Tugas Dataflow akan digunakan. Contoh, run_20230101_120000.
  • transformationJarPath: Lokasi jar kustom di Cloud Storage yang berisi logika transformasi kustom untuk memproses data. Nilai defaultnya adalah kosong.
  • transformationClassName: Nama class yang sepenuhnya memenuhi syarat yang memiliki logika transformasi kustom. Kolom ini wajib diisi jika transformationJarPath ditentukan. Nilai defaultnya adalah kosong.
  • transformationCustomParameters: String yang berisi parameter kustom yang akan diteruskan ke class transformasi kustom. Nilai defaultnya adalah kosong.
  • tables: Daftar tabel sumber yang dipisahkan koma untuk disertakan dalam proses validasi. Nilai defaultnya adalah kosong.
  • tableConfigurationFilePath: Jalur file GCS yang berisi daftar JSON tabel sumber untuk divalidasi. File ini harus berupa file JSON dengan struktur {"tableNames": ["table1", "table2"]}. Secara opsional, optionalConfigurations.<sourceTable>.spannerQuery menetapkan kueri Spanner yang digunakan untuk membaca tabel tersebut, misalnya untuk membatasinya ke shardIds yang dipilih. Beri kunci pada tabel khusus Spanner berdasarkan nama Spanner-nya. Lihat bagian 'Memvalidasi subset shard' di README.md modul untuk mengetahui aturan kueri. Nilai defaultnya adalah kosong.
  • shardIds: Daftar ID shard logis yang dipisahkan koma (ID yang digunakan oleh template sourcedb-to-spanner, yang muncul sebagai direktori <table>/<shardId>/ dalam output Avro). Jika disetel, hanya shard tersebut yang divalidasi. Tabel dengan file sesi ShardIdColumn difilter pada kolom tersebut; setiap tabel dalam cakupan lainnya memerlukan spannerQuery di tableConfigurationFilePath, jika tidak, tugas akan gagal. Misalnya, shard_001,shard_007. Nilai defaultnya adalah kosong.

Menjalankan template

Konsol

  1. Buka halaman Dataflow Membuat tugas dari template.
  2. Buka Membuat 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 default-nya adalah us-central1.

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

  5. Dari menu drop-down Dataflow template, pilih template Cloud Storage Avro files to Spanner Data Validation.
  6. Di kolom parameter yang disediakan, masukkan nilai parameter Anda.
  7. Klik Jalankan tugas.

gcloud CLI

Di shell atau terminal Anda, jalankan template:

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates/VERSION/flex/Avro_to_Spanner_Data_Validator \
    --region=REGION_NAME \
    --parameters \
       gcsInputDirectory=PATH_TO_AVRO_FILES,\
       projectId=PROJECT_ID,\
       instanceId=INSTANCE_ID,\
       databaseId=DATABASE_ID,\
       bigQueryDataset=BIGQUERY_DATASET

Ganti kode berikut:

  • JOB_NAME: nama tugas unik pilihan Anda
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

    • latest untuk menggunakan template versi terbaru, yang tersedia di folder induk tanpa tanggal di bucket— gs://dataflow-templates/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 tempat Anda ingin men-deploy tugas Dataflow—misalnya, us-central1
  • PATH_TO_AVRO_FILES: jalur Cloud Storage ke file Avro.
  • PROJECT_ID: project ID Spanner.
  • INSTANCE_ID: ID instance Spanner tujuan.
  • DATABASE_ID: ID database Spanner tujuan.
  • BIGQUERY_DATASET: ID set data BigQuery untuk hasil validasi.

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
{
   "launchParameter": {
     "jobName": "JOB_NAME",
     "parameters": {
       "gcsInputDirectory": "PATH_TO_AVRO_FILES",
       "projectId": "PROJECT_ID",
       "instanceId": "INSTANCE_ID",
       "databaseId": "DATABASE_ID",
       "bigQueryDataset": "BIGQUERY_DATASET"
     },
     "containerSpecGcsPath": "gs://dataflow-templates/VERSION/flex/Avro_to_Spanner_Data_Validator"
  }
}

Ganti kode berikut:

  • PROJECT_ID: Google Cloud Project ID 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:

    • latest untuk menggunakan template versi terbaru, yang tersedia di folder induk tanpa tanggal di bucket— gs://dataflow-templates/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/
  • LOCATION: region tempat Anda ingin men-deploy tugas Dataflow—misalnya, us-central1
  • PATH_TO_AVRO_FILES: jalur Cloud Storage ke file Avro.
  • PROJECT_ID: project ID Spanner.
  • INSTANCE_ID: ID instance Spanner tujuan.
  • DATABASE_ID: ID database Spanner tujuan.
  • BIGQUERY_DATASET: ID set data BigQuery untuk hasil validasi.