Le modèle de validation des données de fichiers Avro Cloud Storage vers Spanner est un pipeline par lots qui lit les données de Cloud Storage et de Spanner, et les compare pour valider la correction de la migration.
Conditions requises pour ce pipeline
- Le répertoire Cloud Storage pour les fichiers Avro doit exister avant l'exécution du pipeline. Générez ces fichiers Avro en exécutant le pipeline SourceDB vers Cloud Spanner avec le paramètre
gcsOutputDirectory. - L'ensemble de données BigQuery cible pour les résultats de la validation doit exister avant l'exécution du pipeline.
- Les tables Spanner doivent exister avant l'exécution du pipeline.
- Les tables Spanner doivent avoir un schéma compatible (directement ou via le mappage de schéma).
- Pour valider une migration effectuée par le pipeline SourceDB vers Cloud Spanner, vous devez transmettre des valeurs identiques pour toutes les configurations partagées (telles que
sessionFilePath,schemaOverridesFilePathettransformationJarPath).
Paramètres de modèle
Paramètres obligatoires
- gcsInputDirectory : ce répertoire est utilisé pour lire les fichiers AVRO des enregistrements lus à partir de la source. Exemple :
gs://your-bucket/your-path - projectId : nom du projet Cloud Spanner.
- instanceId : instance Cloud Spanner de destination.
- databaseId : base de données Cloud Spanner de destination.
- bigQueryDataset : ID de l'ensemble de données BigQuery dans lequel les résultats de la validation seront stockés. Exemple :
validation_report_dataset
Paramètres facultatifs
- spannerHost : point de terminaison Cloud Spanner à appeler dans le modèle. Exemple :
https://batch-spanner.googleapis.comLa valeur par défaut est https://spanner.googleapis.com. - spannerPriority : priorité des requêtes pour les appels Cloud Spanner. La valeur doit être l'une des suivantes : [
HIGH,MEDIUM,LOW]. La valeur par défaut estHIGH. - sessionFilePath : chemin d'accès au fichier de session dans Cloud Storage contenant les informations de mappage de l'outil de migration Spanner. La valeur par défaut est vide.
- schemaOverridesFilePath : fichier qui spécifie les remplacements de noms de tables et de colonnes de la source à Spanner. La valeur par défaut est vide.
- tableOverrides : il s'agit des remplacements de noms de tables de la source à Spanner. Ils sont écrits au format suivant : [{SourceTableName1, SpannerTableName1}, {SourceTableName2, SpannerTableName2}]. Cet exemple montre comment mapper la table "Singers" à "Vocalists" et la table "Albums" à "Records". Exemple :
[{Singers, Vocalists}, {Albums, Records}]La valeur par défaut est vide. - columnOverrides : il s'agit des remplacements de noms de colonnes de la source à Spanner. Elles sont écrites au format suivant : [{SourceTableName1.SourceColumnName1, SourceTableName1.SpannerColumnName1}, {SourceTableName2.SourceColumnName1, SourceTableName2.SpannerColumnName1}]. Notez que SourceTableName doit rester identique dans la paire source et Spanner. Pour remplacer les noms de tables, utilisez tableOverrides.L'exemple montre comment mapper SingerName à TalentName et AlbumName à RecordName dans les tables Singers et Albums, respectivement. Exemple :
[{Singers.SingerName, Singers.TalentName}, {Albums.AlbumName, Albums.RecordName}]La valeur par défaut est vide. - runId : identifiant unique de l'exécution de la validation. Si vous ne le fournissez pas, le nom du job Dataflow sera utilisé. Exemple :
run_20230101_120000 - transformationJarPath : emplacement du fichier JAR personnalisé dans Cloud Storage contenant la logique de transformation personnalisée pour le traitement des enregistrements. La valeur par défaut est vide.
- transformationClassName : nom de classe complet avec une logique de transformation personnalisée. Ce champ est obligatoire si la valeur de transformationJarPath est spécifiée. La valeur par défaut est vide.
- transformationCustomParameters : chaîne contenant les paramètres personnalisés à transmettre à la classe de transformation personnalisée. La valeur par défaut est vide.
- tables : liste des tables sources à inclure dans l'exécution de la validation, séparées par une virgule. La valeur par défaut est vide.
- tableConfigurationFilePath : chemin d'accès à un fichier GCS contenant une liste JSON des tables sources à valider. Il doit s'agir d'un fichier JSON avec la structure
{"tableNames": ["table1", "table2"]}. Si vous le souhaitez,optionalConfigurations.<sourceTable>.spannerQuerydéfinit la requête Spanner utilisée pour lire cette table, par exemple pour la limiter à lashardIdssélectionnée. Identifiez une table Spanner uniquement par son nom Spanner. Consultez la section "Valider un sous-ensemble de partitions" du fichier README.md du module pour connaître les règles de requête. La valeur par défaut est vide. - shardIds : liste d'ID de partition logique séparés par une virgule (ID utilisés par le modèle sourcedb-to-spanner, qui apparaissent sous la forme du répertoire
<table>/<shardId>/dans la sortie Avro). Si cette option est définie, seuls ces shards sont validés. Les tables avec un fichier de sessionShardIdColumnsont filtrées sur cette colonne. Toutes les autres tables concernées doivent comporter unspannerQuerydanstableConfigurationFilePath, sinon le job échoue. Par exemple,shard_001,shard_007. La valeur par défaut est vide.
Exécuter le modèle
Console
- Accédez à la page Dataflow Créer un job à partir d'un modèle. Accéder à la page Créer un job à partir d'un modèle
- Dans le champ Nom du job, saisissez un nom de job unique.
- Facultatif : pour Point de terminaison régional, sélectionnez une valeur dans le menu déroulant. La région par défaut est
us-central1.Pour obtenir la liste des régions dans lesquelles vous pouvez exécuter un job Dataflow, consultez la page Emplacements Dataflow.
- Dans le menu déroulant Modèle Dataflow, sélectionnez le modèle Validation des données Cloud Storage Avro vers Spanner.
- Dans les champs fournis, saisissez vos valeurs de paramètres.
- Cliquez sur Run Job (Exécuter la tâche).
gcloud CLI
Dans le shell ou le terminal, exécutez le modèle :
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
Remplacez les éléments suivants :
JOB_NAME: nom de job unique de votre choixVERSION: version du modèle que vous souhaitez utiliserVous pouvez utiliser les valeurs suivantes :
latestpour utiliser la dernière version du modèle, disponible dans le dossier parent non daté du bucket gs://dataflow-templates/latest/- Le nom de la version, par exemple :
2023-09-12-00_RC00, pour utiliser une version spécifique du modèle, qui peut être imbriquée dans le dossier parent daté du bucket :gs://dataflow-templates/
REGION_NAME: région dans laquelle vous souhaitez déployer votre job Dataflow, par exempleus-central1PATH_TO_AVRO_FILES: chemin d'accès Cloud Storage aux fichiers Avro.PROJECT_ID: ID du projet Spanner.INSTANCE_ID: ID de l'instance Spanner de destination.DATABASE_ID: ID de la base de données Spanner de destination.BIGQUERY_DATASET: ID de l'ensemble de données BigQuery pour les résultats de la validation.
API
Pour exécuter le modèle à l'aide de l'API REST, envoyez une requête HTTP POST. Pour en savoir plus sur l'API, ses autorisations et leurs champs d'application, consultez la section 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" } }
Remplacez les éléments suivants :
PROJECT_ID: ID du projet Google Cloud dans lequel vous souhaitez exécuter le job DataflowJOB_NAME: nom de job unique de votre choixVERSION: version du modèle que vous souhaitez utiliserVous pouvez utiliser les valeurs suivantes :
latestpour utiliser la dernière version du modèle, disponible dans le dossier parent non daté du bucket gs://dataflow-templates/latest/- Le nom de la version, par exemple :
2023-09-12-00_RC00, pour utiliser une version spécifique du modèle, qui peut être imbriquée dans le dossier parent daté du bucket :gs://dataflow-templates/
LOCATION: région dans laquelle vous souhaitez déployer votre job Dataflow, par exempleus-central1PATH_TO_AVRO_FILES: chemin d'accès Cloud Storage aux fichiers Avro.PROJECT_ID: ID du projet Spanner.INSTANCE_ID: ID de l'instance Spanner de destination.DATABASE_ID: ID de la base de données Spanner de destination.BIGQUERY_DATASET: ID de l'ensemble de données BigQuery pour les résultats de la validation.