Il modello di convalida dei dati da Cloud Storage Avro a Spanner è una pipeline batch che legge i dati da Cloud Storage e Spanner e li confronta per convalidare la correttezza della migrazione.
Requisiti della pipeline
- La directory Cloud Storage per i file Avro deve esistere prima dell'esecuzione della pipeline. Genera questi file Avro eseguendo la pipeline SourceDB to Cloud Spanner con il parametro
gcsOutputDirectory. - Il set di dati BigQuery di destinazione per i risultati della convalida deve esistere prima dell'esecuzione della pipeline.
- Le tabelle Spanner devono esistere prima dell'esecuzione della pipeline.
- Le tabelle Spanner devono avere uno schema compatibile (direttamente o tramite la mappatura dello schema).
- Per convalidare una migrazione eseguita dalla pipeline SourceDB a Cloud Spanner, devi trasmettere valori identici per qualsiasi configurazione condivisa (ad esempio
sessionFilePath,schemaOverridesFilePathetransformationJarPath).
Parametri del modello
Parametri obbligatori
- gcsInputDirectory: questa directory viene utilizzata per leggere i file AVRO dei record letti dall'origine. Ad esempio,
gs://your-bucket/your-path. - projectId: il nome del progetto Cloud Spanner.
- instanceId: l'istanza Cloud Spanner di destinazione.
- databaseId: il database Cloud Spanner di destinazione.
- bigQueryDataset: l'ID set di dati BigQuery in cui verranno archiviati i risultati della convalida. Ad esempio,
validation_report_dataset.
Parametri facoltativi
- spannerHost: l'endpoint Cloud Spanner da chiamare nel modello. Ad esempio,
https://batch-spanner.googleapis.com. Il valore predefinito è https://batch-spanner.googleapis.com. - spannerPriority: la priorità della richiesta per le chiamate Cloud Spanner. Il valore deve essere uno dei seguenti: [
HIGH,MEDIUM,LOW]. Il valore predefinito èHIGH. - sessionFilePath: percorso del file di sessione in Cloud Storage che contiene le informazioni di mappatura di Spanner Migration Tool. Il valore predefinito è vuoto.
- schemaOverridesFilePath: un file che specifica le sostituzioni del nome della tabella e della colonna dall'origine a Spanner. Il valore predefinito è vuoto.
- tableOverrides: questi sono gli override del nome della tabella dall'origine a Spanner. Sono scritte nel seguente formato: [{SourceTableName1, SpannerTableName1}, {SourceTableName2, SpannerTableName2}]. Questo esempio mostra la mappatura della tabella Singers a Vocalists e della tabella Albums a Records. Ad esempio,
[{Singers, Vocalists}, {Albums, Records}]. Il valore predefinito è vuoto. - columnOverrides: questi sono gli override del nome della colonna dall'origine a Spanner. Sono scritti nel seguente formato: [{SourceTableName1.SourceColumnName1, SourceTableName1.SpannerColumnName1}, {SourceTableName2.SourceColumnName1, SourceTableName2.SpannerColumnName1}]. Tieni presente che SourceTableName deve rimanere invariato sia nell'origine sia nella coppia Spanner. Per ignorare i nomi delle tabelle, utilizza tableOverrides.L'esempio mostra la mappatura di SingerName a TalentName e di AlbumName a RecordName rispettivamente nelle tabelle Singers e Albums. Ad esempio,
[{Singers.SingerName, Singers.TalentName}, {Albums.AlbumName, Albums.RecordName}]. Il valore predefinito è vuoto. - runId: un identificatore univoco per l'esecuzione della convalida. Se non viene fornito, verrà utilizzato il nome del job Dataflow. Ad esempio,
run_20230101_120000. - transformationJarPath: percorso jar personalizzato in Cloud Storage che contiene la logica di trasformazione personalizzata per l'elaborazione dei record. Il valore predefinito è vuoto.
- transformationClassName: nome di classe completo con la logica di trasformazione personalizzata. È un campo obbligatorio se viene specificato transformationJarPath. Il valore predefinito è vuoto.
- transformationCustomParameters: stringa contenente eventuali parametri personalizzati da trasferire alla classe di trasformazione personalizzata. Il valore predefinito è vuoto.
- tables: un elenco separato da virgole delle tabelle di origine da includere nell'esecuzione della convalida. Il valore predefinito è vuoto.
- tableConfigurationFilePath: un percorso del file GCS contenente un elenco JSON delle tabelle di origine da convalidare. Deve essere un file JSON con la struttura
{"tableNames": ["table1", "table2"]}. Il valore predefinito è vuoto.
Esegui il modello
Console
- Vai alla pagina Crea job da modello di Dataflow. Vai a Crea job da modello
- Nel campo Nome job, inserisci un nome univoco per il job.
- (Facoltativo) Per Endpoint a livello di regione, seleziona un valore dal menu a discesa. La regione
predefinita è
us-central1.Per un elenco delle regioni in cui puoi eseguire un job Dataflow, consulta Località di Dataflow.
- Nel menu a discesa Modello Dataflow, seleziona il modello File Avro di Cloud Storage per la convalida dei dati di Spanner.
- Nei campi dei parametri forniti, inserisci i valori dei parametri.
- Fai clic su Esegui job.
gcloud CLI
Nella shell o nel terminale, esegui il modello:
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
Sostituisci quanto segue:
JOB_NAME: un nome univoco del job a tua sceltaVERSION: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latestper utilizzare l'ultima versione del modello, disponibile nella cartella principale senza data nel bucket: gs://dataflow-templates/latest/- il nome della versione, ad esempio
2023-09-12-00_RC00, per utilizzare una versione specifica del modello, che si trova nidificata nella rispettiva cartella principale con data nel bucket: gs://dataflow-templates/
REGION_NAME: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1PATH_TO_AVRO_FILES: il percorso Cloud Storage dei file Avro.PROJECT_ID: l'ID progetto Spanner.INSTANCE_ID: l'ID dell'istanza Spanner di destinazione.DATABASE_ID: l'ID database Spanner di destinazione.BIGQUERY_DATASET: l'ID set di dati BigQuery per i risultati della convalida.
API
Per eseguire il modello utilizzando l'API REST, invia una richiesta HTTP POST. Per saperne di più sull'API e sui relativi ambiti di autorizzazione, consulta 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" } }
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto Google Cloud in cui vuoi eseguire il job DataflowJOB_NAME: un nome univoco del job a tua sceltaVERSION: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latestper utilizzare l'ultima versione del modello, disponibile nella cartella principale senza data nel bucket: gs://dataflow-templates/latest/- il nome della versione, ad esempio
2023-09-12-00_RC00, per utilizzare una versione specifica del modello, che si trova nidificata nella rispettiva cartella principale con data nel bucket: gs://dataflow-templates/
LOCATION: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1PATH_TO_AVRO_FILES: il percorso Cloud Storage dei file Avro.PROJECT_ID: l'ID progetto Spanner.INSTANCE_ID: l'ID dell'istanza Spanner di destinazione.DATABASE_ID: l'ID database Spanner di destinazione.BIGQUERY_DATASET: l'ID set di dati BigQuery per i risultati della convalida.