Die Vorlage „Cloud Storage Avro für Spanner-Datenvalidierung“ ist eine Batchpipeline, die Daten aus Cloud Storage und Spanner liest und vergleicht, um die Richtigkeit der Migration zu validieren.
Pipelineanforderungen
- Das Cloud Storage-Verzeichnis für Avro-Dateien muss vor der Ausführung der Pipeline vorhanden sein. Generieren Sie diese Avro-Dateien, indem Sie die Pipeline SourceDB zu Cloud Spanner mit dem Parameter
gcsOutputDirectoryausführen. - Das BigQuery-Ziel-Dataset für die Validierungsergebnisse muss vor der Pipelineausführung vorhanden sein.
- Die Spanner-Tabellen müssen vor der Pipelineausführung vorhanden sein.
- Die Spanner-Tabellen müssen ein kompatibles Schema haben (entweder direkt oder über die Schemazuordnung).
- Wenn Sie eine Migration validieren möchten, die von der SourceDB to Cloud Spanner-Pipeline ausgeführt wurde, müssen Sie identische Werte für alle freigegebenen Konfigurationen (z. B.
sessionFilePath,schemaOverridesFilePathundtransformationJarPath) übergeben.
Vorlagenparameter
Erforderliche Parameter
- gcsInputDirectory: Dieses Verzeichnis wird verwendet, um die AVRO-Dateien der Datensätze zu lesen, die aus der Quelle gelesen werden. Beispiel:
gs://your-bucket/your-path. - projectId: Dies ist der Name des Cloud Spanner-Projekts.
- instanceId: Die Cloud Spanner-Zielinstanz.
- databaseId: Die Ziel-Cloud Spanner-Datenbank.
- bigQueryDataset: Die BigQuery-Dataset-ID, in der die Validierungsergebnisse gespeichert werden. Beispiel:
validation_report_dataset.
Optionale Parameter
- spannerHost: Der Cloud Spanner-Endpunkt, der in der Vorlage aufgerufen werden soll. Beispiel:
https://batch-spanner.googleapis.com. Die Standardeinstellung ist https://batch-spanner.googleapis.com. - spannerPriority: Die Anfragepriorität für Cloud Spanner-Aufrufe. Der Wert muss einer der folgenden sein: [
HIGH,MEDIUM,LOW]. Der Standardwert istHIGH. - sessionFilePath: Pfad der Sitzungsdatei in Cloud Storage, die Zuordnungsinformationen aus dem Spanner Migration Tool enthält. Die Standardeinstellung ist leer.
- schemaOverridesFilePath: Eine Datei, in der die Überschreibungen für Tabellen- und Spaltennamen von der Quelle zu Spanner angegeben werden. Die Standardeinstellung ist leer.
- tableOverrides: Dies sind die Überschreibungen des Tabellennamens von der Quelle zu Spanner. Sie werden im folgenden Format geschrieben: [{SourceTableName1, SpannerTableName1}, {SourceTableName2, SpannerTableName2}]. In diesem Beispiel wird die Tabelle „Singers“ der Tabelle „Vocalists“ und die Tabelle „Albums“ der Tabelle „Records“ zugeordnet. Beispiel:
[{Singers, Vocalists}, {Albums, Records}]. Die Standardeinstellung ist leer. - columnOverrides: Dies sind die Überschreibungen für Spaltennamen von der Quelle zu Spanner. Sie werden im folgenden Format geschrieben: [{SourceTableName1.SourceColumnName1, SourceTableName1.SpannerColumnName1}, {SourceTableName2.SourceColumnName1, SourceTableName2.SpannerColumnName1}]. Der SourceTableName sollte sowohl in der Quelle als auch im Spanner-Paar gleich bleiben. Verwenden Sie tableOverrides, um Tabellennamen zu überschreiben.Im Beispiel wird SingerName in der Tabelle „Singers“ (Sänger) in TalentName und AlbumName in der Tabelle „Albums“ (Alben) in RecordName umgewandelt. Beispiel:
[{Singers.SingerName, Singers.TalentName}, {Albums.AlbumName, Albums.RecordName}]. Die Standardeinstellung ist leer. - runId: Eine eindeutige Kennung für den Validierungslauf. Wenn nicht angegeben, wird der Dataflow-Jobname verwendet. Beispiel:
run_20230101_120000. - transformationJarPath: Speicherort der benutzerdefinierten JAR-Datei in Cloud Storage, die die benutzerdefinierte Transformationslogik für die Verarbeitung von Datensätzen enthält. Die Standardeinstellung ist leer.
- transformationClassName: Voll qualifizierter Klassenname mit der benutzerdefinierten Transformationslogik. Es ist ein Pflichtfeld, wenn „transformationJarPath“ angegeben ist. Die Standardeinstellung ist leer.
- transformationCustomParameters: String mit allen benutzerdefinierten Parametern, die an die benutzerdefinierte Transformationsklasse übergeben werden sollen. Die Standardeinstellung ist leer.
- tables: Eine durch Kommas getrennte Liste von Quelltabellen, die in den Validierungslauf aufgenommen werden sollen. Die Standardeinstellung ist leer.
- tableConfigurationFilePath: Ein GCS-Dateipfad, der eine JSON-Liste der zu validierenden Quelltabelle enthält. Dabei muss es sich um eine JSON-Datei mit der Struktur
{"tableNames": ["table1", "table2"]}handeln. Die Standardeinstellung ist leer.
Führen Sie die Vorlage aus.
Console
- Rufen Sie die Dataflow-Seite Job aus Vorlage erstellen auf. Zur Seite "Job aus Vorlage erstellen“
- Geben Sie im Feld Jobname einen eindeutigen Jobnamen ein.
- Optional: Wählen Sie für Regionaler Endpunkt einen Wert aus dem Drop-down-Menü aus. Die Standardregion ist
us-central1.Eine Liste der Regionen, in denen Sie einen Dataflow-Job ausführen können, finden Sie unter Dataflow-Standorte.
- Wählen Sie im Drop-down-Menü Dataflow-Vorlage die Vorlage Cloud Storage Avro files to Spanner Data Validation (Cloud Storage-Avro-Dateien für die Spanner-Datenvalidierung) aus.
- Geben Sie Ihre Parameterwerte in die Parameterfelder ein.
- Klicken Sie auf Job ausführen.
gcloud-CLI
Führen Sie die Vorlage in der Shell oder im Terminal aus:
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
Ersetzen Sie Folgendes:
JOB_NAME: Ein eindeutiger Jobname Ihrer WahlVERSION: Die Version der Vorlage, die Sie verwenden möchtenSie können die folgenden Werte verwenden:
latestzur Verwendung der neuesten Version der Vorlage, die im nicht datierten übergeordneten Ordner im Bucket verfügbar ist: gs://dataflow-templates/latest/.- Den Versionsnamen wie
2023-09-12-00_RC00, um eine bestimmte Version der Vorlage zu verwenden. Diese ist verschachtelt im jeweiligen datierten übergeordneten Ordner im Bucket enthalten: gs://dataflow-templates/.
REGION_NAME: die Region, in der Sie Ihren Dataflow-Job bereitstellen möchten, z. B.us-central1PATH_TO_AVRO_FILES: Der Cloud Storage-Pfad zu den Avro-Dateien.PROJECT_ID: die Spanner-Projekt-ID.INSTANCE_ID: die ID der Ziel-Spanner-Instanz.DATABASE_ID: die ID der Ziel-Spanner-Datenbank.BIGQUERY_DATASET: Die BigQuery-Dataset-ID für die Validierungsergebnisse.
API
Senden Sie eine HTTP-POST-Anfrage, um die Vorlage mithilfe der REST API auszuführen. Weitere Informationen zur API und ihren Autorisierungsbereichen finden Sie unter 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" } }
Ersetzen Sie Folgendes:
PROJECT_ID: Die Google Cloud Projekt-ID, in der Sie den Dataflow-Job ausführen möchtenJOB_NAME: Ein eindeutiger Jobname Ihrer WahlVERSION: Die Version der Vorlage, die Sie verwenden möchtenSie können die folgenden Werte verwenden:
latestzur Verwendung der neuesten Version der Vorlage, die im nicht datierten übergeordneten Ordner im Bucket verfügbar ist: gs://dataflow-templates/latest/.- Den Versionsnamen wie
2023-09-12-00_RC00, um eine bestimmte Version der Vorlage zu verwenden. Diese ist verschachtelt im jeweiligen datierten übergeordneten Ordner im Bucket enthalten: gs://dataflow-templates/.
LOCATION: die Region, in der Sie Ihren Dataflow-Job bereitstellen möchten, z. B.us-central1PATH_TO_AVRO_FILES: Der Cloud Storage-Pfad zu den Avro-Dateien.PROJECT_ID: die Spanner-Projekt-ID.INSTANCE_ID: die ID der Ziel-Spanner-Instanz.DATABASE_ID: die ID der Ziel-Spanner-Datenbank.BIGQUERY_DATASET: Die BigQuery-Dataset-ID für die Validierungsergebnisse.