Modello di convalida dei dati da Avro Cloud Storage a Spanner

Il modello Cloud Storage Avro files to Spanner Data Validation è 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 dei nomi delle colonne 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 completo della classe con la logica di trasformazione personalizzata. È un campo obbligatorio se viene specificato transformationJarPath. Il valore predefinito è vuoto.
  • transformationCustomParameters: stringa contenente eventuali parametri personalizzati da passare 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"]}. (Facoltativo) optionalConfigurations.<sourceTable>.spannerQuery imposta la query Spanner utilizzata per leggere la tabella, ad esempio per limitarla al shardIds selezionato. Chiave di una tabella solo Spanner in base al nome Spanner. Per le regole di query, consulta la sezione "Validating a subset of shards" (Convalida di un sottoinsieme di shard) del file README.md del modulo. Il valore predefinito è vuoto.
  • shardIds: un elenco separato da virgole di ID shard logici (gli ID utilizzati dal modello sourcedb-to-spanner, che vengono visualizzati come directory <table>/<shardId>/ nell'output Avro). Se impostato, vengono convalidati solo questi shard. Le tabelle con un file di sessione ShardIdColumn vengono filtrate in base a questa colonna; ogni altra tabella inclusa nell'ambito ha bisogno di un spannerQuery in tableConfigurationFilePath, altrimenti il job non va a buon fine. Ad esempio, shard_001,shard_007. 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, vedi Località 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 del 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 POST HTTP. 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 del database Spanner di destinazione.
  • BIGQUERY_DATASET: l'ID set di dati BigQuery per i risultati della convalida.