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, dantransformationJarPath).
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 adalahHIGH. - 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>.spannerQuerymenetapkan kueri Spanner yang digunakan untuk membaca tabel tersebut, misalnya untuk membatasinya keshardIdsyang 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 sesiShardIdColumndifilter pada kolom tersebut; setiap tabel dalam cakupan lainnya memerlukanspannerQueryditableConfigurationFilePath, jika tidak, tugas akan gagal. Misalnya,shard_001,shard_007. Nilai defaultnya 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 Dataflow template, pilih template Cloud Storage Avro files to Spanner Data Validation.
- Di kolom parameter yang disediakan, masukkan nilai parameter Anda.
- 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 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/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-central1PATH_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 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/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-central1PATH_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.