Le modèle Spanner vers Avro sur Cloud Storage est un pipeline par lots qui exporte une base de données Spanner complète vers Cloud Storage au format Avro. L'exportation d'une base de données Spanner crée un dossier dans le bucket que vous sélectionnez. Le dossier contient :
- Un fichier
spanner-export.json
- Un fichier
TableName-manifest.json
pour chaque table de la base de données que vous avez exportée - Un ou plusieurs fichiers
TableName.avro-#####-of-#####
Par exemple, l'exportation d'une base de données avec deux tables, Singers
et Albums
, crée l'ensemble de fichiers suivant :
Albums-manifest.json
Albums.avro-00000-of-00002
Albums.avro-00001-of-00002
Singers-manifest.json
Singers.avro-00000-of-00003
Singers.avro-00001-of-00003
Singers.avro-00002-of-00003
spanner-export.json
Conditions requises pour ce pipeline
- La base de données Spanner doit exister.
- Le bucket Cloud Storage de sortie doit exister.
- En plus des rôles Identity and Access Management (IAM) nécessaires à l'exécution des jobs Dataflow, vous devez disposer des rôles IAM appropriés pour lire vos données Spanner et écrire dans votre bucket Cloud Storage.
Paramètres de modèle
Paramètres obligatoires
- instanceId : ID d'instance de la base de données Spanner à exporter.
- databaseId : ID de la base de données Spanner que vous souhaitez exporter.
- outputDir : chemin d'accès Cloud Storage vers lequel exporter les fichiers Avro. La tâche d'exportation crée un dépôt contenant les fichiers exportés sous ce chemin d'accès. (par exemple, gs://votre-bucket/votre-chemin-d'accès).
Paramètres facultatifs
- avroTempDirectory : Chemin d'accès Cloud Storage où les fichiers Avro temporaires sont écrits.
- spannerHost : Point de terminaison Cloud Spanner à appeler dans le modèle. Utilisé uniquement pour les tests. (Exemple : https://batch-spanner.googleapis.com). La valeur par défaut est https://batch-spanner.googleapis.com.
- snapshotTime : Code temporel correspondant à la version de la base de données Spanner que vous souhaitez lire. L'horodatage doit être spécifié au format RFC 3339 UTC
Zulu
. L'horodatage doit être antérieur à la date et l'heure actuelles et l'Obsolescence maximale de l'horodatage s'applique. (Exemple: 1990-12-31T23:59:60Z). La valeur par défaut est vide. - spannerProjectId : ID du projet Google Cloud contenant la base de données Spanner à partir de laquelle vous souhaitez lire les données.
- shouldExportTimestampAsLogicalType : si la valeur est "true", les horodatages sont exportés en tant que type
long
avec le type logiquetimestamp-micros
. Par défaut, ce paramètre est défini surfalse
et les horodatages sont exportés sous forme de chaînes ISO-8601 à la nanoseconde près. - tableNames : Liste de tables séparées par une virgule spécifiant le sous-ensemble de la base de données Spanner à exporter. Si vous définissez ce paramètre, vous devez inclure toutes les tables associées (tables parentes et tables référencées par clé étrangère) ou définir le paramètre
shouldExportRelatedTables
surtrue
. Si la table se trouve dans un schéma nommé, veuillez utiliser un nom complet. Par exemple :sch1.foo
, oùsch1
correspond au nom du schéma etfoo
au nom de la table. La valeur par défaut est vide. - shouldExportRelatedTables : indique si les tables associées doivent être incluses. Ce paramètre est utilisé conjointement avec le paramètre
tableNames
. La valeur par défaut est "false". - spannerPriority : priorité des requêtes pour les appels Spanner. Les valeurs possibles sont
HIGH
,MEDIUM
, etLOW
. La valeur par défaut estMEDIUM
. - dataBoostEnabled : Définissez la valeur sur
true
pour utiliser les ressources de calcul de Spanner Data Boost afin d'exécuter le job avec un impact quasiment nul sur les workflows OLTP de Spanner. Lorsque ce paramètre est défini surtrue
, vous devez également disposer de l'autorisation IAMspanner.databases.useDataBoost
. Pour en savoir plus, consultez la présentation de Data Boost (https://cloud.google.com/spanner/docs/databoost/databoost-overview). La valeur par défaut est "false".
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.
Pour que le job s'affiche sur la page Instances Spanner de la console Google Cloud, le nom du job doit correspondre au format suivant :
cloud-spanner-export-SPANNER_INSTANCE_ID-SPANNER_DATABASE_NAME
Remplacez les éléments suivants :
SPANNER_INSTANCE_ID
: ID de votre instance SpannerSPANNER_DATABASE_NAME
: nom de votre base de données Spanner
- 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 the Cloud Spanner to Avro Files on Cloud Storage template.
- Dans les champs fournis, saisissez vos valeurs de paramètres.
- Cliquez sur Run Job (Exécuter la tâche).
gcloud
Dans le shell ou le terminal, exécutez le modèle :
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_Spanner_to_GCS_Avro \ --region REGION_NAME \ --staging-location GCS_STAGING_LOCATION \ --parameters \ instanceId=INSTANCE_ID,\ databaseId=DATABASE_ID,\ outputDir=GCS_DIRECTORY
Remplacez les éléments suivants :
JOB_NAME
: nom de job unique de votre choixLe nom du job doit correspondre au format
cloud-spanner-export-INSTANCE_ID-DATABASE_ID
pour apparaître dans la section Spanner de la console Google Cloud.VERSION
: version du modèle que vous souhaitez utiliserVous pouvez utiliser les valeurs suivantes :
latest
pour utiliser la dernière version du modèle, disponible dans le dossier parent non daté du bucket gs://dataflow-templates-REGION_NAME/latest/- Le nom de la version, par exemple
2023-09-12-00_RC00
, pour utiliser une version spécifique du modèle, qui est imbriqué dans le dossier parent daté respectif dans le bucket : gs://dataflow-templates-REGION_NAME/
REGION_NAME
: région dans laquelle vous souhaitez déployer votre job Dataflow, par exempleus-central1
GCS_STAGING_LOCATION
: chemin d'accès permettant d'écrire les fichiers temporaires (par exemple,gs://mybucket/temp
)INSTANCE_ID
: ID de votre instance SpannerDATABASE_ID
: ID de votre base de données SpannerGCS_DIRECTORY
: le chemin d'accès à Cloud Storage vers lequel les fichiers Avro sont exportés vers
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/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/Cloud_Spanner_to_GCS_Avro { "jobName": "JOB_NAME", "parameters": { "instanceId": "INSTANCE_ID", "databaseId": "DATABASE_ID", "outputDir": "gs://GCS_DIRECTORY" } }
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 choixLe nom du job doit correspondre au format
cloud-spanner-export-INSTANCE_ID-DATABASE_ID
pour apparaître dans la section Spanner de la console Google Cloud.VERSION
: version du modèle que vous souhaitez utiliserVous pouvez utiliser les valeurs suivantes :
latest
pour utiliser la dernière version du modèle, disponible dans le dossier parent non daté du bucket gs://dataflow-templates-REGION_NAME/latest/- Le nom de la version, par exemple
2023-09-12-00_RC00
, pour utiliser une version spécifique du modèle, qui est imbriqué dans le dossier parent daté respectif dans le bucket : gs://dataflow-templates-REGION_NAME/
LOCATION
: région dans laquelle vous souhaitez déployer votre job Dataflow, par exempleus-central1
GCS_STAGING_LOCATION
: chemin d'accès permettant d'écrire les fichiers temporaires (par exemple,gs://mybucket/temp
)INSTANCE_ID
: ID de votre instance SpannerDATABASE_ID
: ID de votre base de données SpannerGCS_DIRECTORY
: chemin d'accès à Cloud Storage vers lequel les fichiers Avro sont exportés vers
Étapes suivantes
- Apprenez-en plus sur les modèles Dataflow.
- Consultez la liste des modèles fournis par Google.