Modello di convalida dei dati da Avro Cloud Storage a Spanner

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, schemaOverridesFilePath e transformationJarPath).

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

  1. Vai alla pagina Crea job da modello di Dataflow.
  2. Vai a Crea job da modello
  3. Nel campo Nome job, inserisci un nome univoco per il job.
  4. (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.

  5. Nel menu a discesa Modello Dataflow, seleziona il modello File Avro di Cloud Storage per la convalida dei dati di Spanner.
  6. Nei campi dei parametri forniti, inserisci i valori dei parametri.
  7. 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 scelta
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi utilizzare i seguenti valori:

    • latest per 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 esempio us-central1
  • PATH_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 Dataflow
  • JOB_NAME: un nome univoco del job a tua scelta
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi utilizzare i seguenti valori:

    • latest per 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 esempio us-central1
  • PATH_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.