Les flux de modification Spanner vers le modèle Pub/Sub sont un pipeline de streaming qui diffuse les enregistrements de modification des données Spanner et les écrit dans des sujets Pub/Sub à l'aide de l'exécuteur Dataflow V2.
Pour générer vos données dans un nouveau sujet Pub/Sub, vous devez d'abord créer le sujet. Après la création, Pub/Sub génère et associe automatiquement un abonnement au nouveau sujet. Si vous essayez de générer des données dans un sujet Pub/Sub qui n'existe pas, le pipeline Dataflow génère une exception, et le pipeline se bloque car il tente en boucle d'établir une connexion.
Si le sujet Pub/Sub nécessaire existe déjà, vous pouvez générer des données dans ce sujet.
Pour en savoir plus, consultez les pages À propos des flux de modifications, Créer des connexions de flux de modification avec Dataflow et Bonnes pratiques concernant les flux de modifications.
Conditions requises pour ce pipeline
- L'instance Spanner doit exister avant l'exécution du pipeline.
- La base de données Spanner doit exister avant l'exécution du pipeline.
- L'instance de métadonnées Spanner doit exister avant l'exécution du pipeline.
- La base de données de métadonnées Spanner doit exister avant l'exécution du pipeline.
- Le flux de modifications Spanner doit exister avant l'exécution du pipeline.
- Le sujet Pub/Sub doit exister avant l'exécution du pipeline.
Paramètres de modèle
Paramètres obligatoires
- spannerInstanceId : Instance Spanner à partir de laquelle lire les flux de modifications.
- spannerDatabase : Base de données Spanner à partir de laquelle lire les flux de modifications.
- spannerMetadataInstanceId : Instance Spanner à utiliser pour la table de métadonnées du connecteur de flux de modification.
- spannerMetadataDatabase : Base de données Spanner à utiliser pour la table de métadonnées du connecteur de flux de modification.
- spannerChangeStreamName : Nom du flux de modifications Spanner à lire.
- pubsubTopic : sujet Pub/Sub dans lequel inscrire le résultat des flux de modifications
Paramètres facultatifs
- spannerProjectId : Projet à partir duquel lire les flux de modifications. Il s'agit également du projet dans lequel la table de métadonnées du connecteur de flux de modifications est créée. La valeur par défaut de ce paramètre correspond au projet dans lequel le pipeline Dataflow est exécuté.
- spannerDatabaseRole : Rôle de base de données Spanner à utiliser lors de l'exécution du modèle. Ce paramètre n'est requis que lorsque le compte principal IAM qui exécute le modèle est un utilisateur de contrôle d'accès précis. Le rôle de base de données doit disposer du droit
SELECT
sur le flux de modifications et du droitEXECUTE
sur la fonction de lecture du flux de modifications. Pour en savoir plus, consultez la section "Contrôle des accès précis pour les flux de modifications" (https://cloud.google.com/spanner/docs/fgac-change-streams). - spannerMetadataTableName : Nom de la table des métadonnées du connecteur de flux de modifications Cloud Spanner à utiliser. Si aucune valeur n'est fournie, Spanner crée automatiquement la table de métadonnées du connecteur de flux lors de la modification du flux du pipeline. Vous devez fournir ce paramètre lorsque vous mettez à jour un pipeline existant. N'utilisez pas ce paramètre dans d'autres cas.
- startTimestamp : date et heure de début (incluses) (https://tools.ietf.org/html/rfc3339) à utiliser pour lire les flux de modifications. Par exemple : ex-2021-10-12T07:20:50.52Z. La valeur par défaut est l'horodatage du démarrage du pipeline, c'est-à-dire l'heure actuelle.
- endTimestamp : date et heure de fin (incluses) (https://tools.ietf.org/html/rfc3339) à utiliser pour la lecture des flux de modifications. Par exemple : ex-2021-10-12T07:20:50.52Z. Elle est définie par défaut sur une période infinie dans le futur.
- spannerHost : Point de terminaison Cloud Spanner à appeler dans le modèle. Utilisé uniquement pour les tests. (Exemple : https://spanner.googleapis.com). La valeur par défaut est https://spanner.googleapis.com.
- outputDataFormat : format de la sortie. Le résultat est encapsulé dans de nombreux messages PubsubMessages et envoyé à un sujet Pub/Sub. Les formats autorisés sont JSON et AVRO. La valeur par défaut est JSON.
- pubsubAPI : API Pub/Sub utilisée pour mettre en œuvre le pipeline. Les API autorisées sont
pubsubio
etnative_client
. Pour un petit nombre de requêtes par seconde (RPS),native_client
a moins de latence. Pour un grand nombre de RPS,pubsubio
fournit des performances supérieures et plus stables. La valeur par défaut estpubsubio
. - pubsubProjectId : projet de sujet Pub/Sub. La valeur par défaut de ce paramètre correspond au projet dans lequel le pipeline Dataflow est exécuté.
- rpcPriority : Priorité des requêtes pour les appels Spanner. Les valeurs autorisées sont HIGH (élevé), MEDIUM (moyen) et LOW (faible). La valeur par défaut est "HIGH".
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 the Cloud Spanner change streams to Pub/Sub 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 flex-template run JOB_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Spanner_Change_Streams_to_PubSub \ --region REGION_NAME \ --parameters \ spannerInstanceId=SPANNER_INSTANCE_ID,\ spannerDatabase=SPANNER_DATABASE,\ spannerMetadataInstanceId=SPANNER_METADATA_INSTANCE_ID,\ spannerMetadataDatabase=SPANNER_METADATA_DATABASE,\ spannerChangeStreamName=SPANNER_CHANGE_STREAM,\ pubsubTopic=PUBSUB_TOPIC
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 :
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
SPANNER_INSTANCE_ID
: ID de l'instance SpannerSPANNER_DATABASE
: Base de données SpannerSPANNER_METADATA_INSTANCE_ID
: ID d'instance de métadonnées SpannerSPANNER_METADATA_DATABASE
: base de données de métadonnées SpannerSPANNER_CHANGE_STREAM
: flux de modifications SpannerPUBSUB_TOPIC
: sujet Pub/Sub dans lequel inscrire le résultat des flux de modifications
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 { "launch_parameter": { "jobName": "JOB_NAME", "parameters": { "spannerInstanceId": "SPANNER_INSTANCE_ID", "spannerDatabase": "SPANNER_DATABASE", "spannerMetadataInstanceId": "SPANNER_METADATA_INSTANCE_ID", "spannerMetadataDatabase": "SPANNER_METADATA_DATABASE", "spannerChangeStreamName": "SPANNER_CHANGE_STREAM", "pubsubTopic": "PUBSUB_TOPIC" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Spanner_Change_Streams_to_PubSub", } }
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 :
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
SPANNER_INSTANCE_ID
: ID de l'instance SpannerSPANNER_DATABASE
: Base de données SpannerSPANNER_METADATA_INSTANCE_ID
: ID d'instance de métadonnées SpannerSPANNER_METADATA_DATABASE
: base de données de métadonnées SpannerSPANNER_CHANGE_STREAM
: flux de modifications SpannerPUBSUB_TOPIC
: sujet Pub/Sub dans lequel inscrire le résultat des flux de modifications
Étapes suivantes
- Apprenez-en plus sur les modèles Dataflow.
- Consultez la liste des modèles fournis par Google.