La plantilla de flujos de cambios de Spanner a Pub/Sub es una canalización de transmisión en la que se transmiten los registros de cambios de datos de Spanner y se escriben en temas de Pub/Sub mediante Dataflow Runner V2.
Para enviar tus datos a un tema nuevo de Pub/Sub, primero debes crear el tema. Después de crearlo, Pub/Sub genera y adjunta automáticamente una suscripción al tema nuevo. Si intentas generar datos en un tema de Pub/Sub inexistente, la canalización de Dataflow mostrará una excepción y esta se detendrá a medida que intente establecer una conexión de forma continua.
Si el tema de Pub/Sub necesario ya existe, puedes generar datos en él.
Para obtener más información, consulta Acerca de los flujos de cambios, Compila conexiones de flujos de cambios con Dataflow y Prácticas recomendadas de flujos de cambio.
Requisitos de la canalización
- La instancia de Spanner debe existir antes de ejecutar la canalización.
- La base de datos de Spanner debe existir antes de ejecutar la canalización.
- La instancia de metadatos de Spanner debe existir antes de ejecutar la canalización.
- La base de datos de metadatos de Spanner debe existir antes de ejecutar la canalización.
- El flujo de cambios de Spanner debe existir antes de ejecutar la canalización.
- El tema de Pub/Sub debe existir antes de ejecutar la canalización.
Parámetros de la plantilla
Parámetros obligatorios
- spannerInstanceId: La instancia de Spanner desde la que se leerán los flujos de cambios.
- spannerDatabase: La base de datos de Spanner desde la que se leerán los flujos de cambios.
- spannerMetadataInstanceId: La instancia de Spanner que se usará para la tabla de metadatos del conector de flujos de cambios.
- spannerMetadataDatabase: La base de datos de Spanner que se usará para la tabla de metadatos del conector de flujos de cambios.
- spannerChangeStreamName: El nombre del flujo de cambios de Spanner desde el que se leerá.
- pubsubTopic: Es el tema de Pub/Sub para la salida de los flujos de cambios.
Parámetros opcionales
- spannerProjectId: El proyecto desde el que se leerán los flujos de cambios. En este proyecto, también se crea la tabla de metadatos del conector de flujos de cambios. El valor predeterminado para este parámetro es el proyecto en el que se ejecuta la canalización de Dataflow.
- spannerDatabaseRole: El rol de base de datos de Spanner que se usará cuando se ejecute la plantilla. Este parámetro solo es necesario cuando el principal de IAM que ejecuta la plantilla es un usuario de control de acceso detallado. El rol de la base de datos debe tener el privilegio
SELECT
en la transmisión de cambios y el privilegioEXECUTE
en la función de lectura de la transmisión de cambios. Para obtener más información, consulta Control de acceso detallado para los flujos de cambios (https://cloud.google.com/spanner/docs/fgac-change-streams). - spannerMetadataTableName: El nombre de la tabla de metadatos del conector de flujos de cambios de Spanner que se usará. Si no se proporciona la tabla de metadatos del conector de transmisión durante el cambio de flujo de canalización, Spanner la crea automáticamente. Debes proporcionar este parámetro cuando actualices una canalización existente. No uses este parámetro para otros casos.
- startTimestamp: La fecha y hora de inicio (https://tools.ietf.org/html/rfc3339), inclusiva, que se usará para leer los flujos de cambios. Por ejemplo, ex-2021-10-12T07:20:50.52Z. El valor predeterminado es la marca de tiempo del inicio de la canalización, es decir, la hora actual.
- endTimestamp: La fecha y hora de finalización (https://tools.ietf.org/html/rfc3339), inclusiva, que se usará para leer los flujos de cambios. Por ejemplo, ex-2021-10-12T07:20:50.52Z. El valor predeterminado es un tiempo infinito en el futuro.
- spannerHost: Es el extremo de Cloud Spanner al que se llamará en la plantilla. Solo se usa para pruebas. Por ejemplo,
https://spanner.googleapis.com
La configuración predeterminada es https://spanner.googleapis.com. - outputDataFormat: Es el formato del resultado. El resultado se une a muchos PubsubMessages y se envía a un tema de Pub/Sub. Los formatos permitidos son JSON y AVRO. El valor predeterminado es JSON.
- pubsubAPI: La API de Pub/Sub que se usa para implementar la canalización. Las APIs permitidas son
pubsubio
ynative_client
. Para una pequeña cantidad de consultas por segundo (QPS),native_client
tiene menos latencia. Para una gran cantidad de QPS,pubsubio
proporciona un rendimiento mejor y más estable. El valor predeterminado espubsubio
. - pubsubProjectId: Es el proyecto del tema de Pub/Sub. El valor predeterminado para este parámetro es el proyecto en el que se ejecuta la canalización de Dataflow.
- rpcPriority: La prioridad de solicitud para llamadas de Spanner. Los valores permitidos son HIGH, MEDIUM y LOW. La configuración predeterminada es: HIGH.
- includeSpannerSource: Indica si se incluyen o no el ID de la base de datos y el ID de la instancia de Spanner para leer el flujo de cambios en los datos del mensaje de salida. La configuración predeterminada es "false".
- outputMessageMetadata: Es el valor de cadena del campo personalizado outputMessageMetadata en el mensaje de Pub/Sub de salida. El valor predeterminado es vacío, y el campo outputMessageMetadata solo se completa si este valor no está vacío. Escapa los caracteres especiales cuando ingreses el valor aquí(p. ej., comillas dobles).
Ejecuta la plantilla
Console
- Ve a la página Crear un trabajo a partir de una plantilla de Dataflow. Ir a Crear un trabajo a partir de una plantilla
- En el campo Nombre del trabajo, ingresa un nombre de trabajo único.
- Opcional: Para Extremo regional, selecciona un valor del menú desplegable. La región predeterminada es
us-central1
.Para obtener una lista de regiones en las que puedes ejecutar un trabajo de Dataflow, consulta Ubicaciones de Dataflow.
- En el menú desplegable Plantilla de Dataflow, selecciona the Cloud Spanner change streams to Pub/Sub template.
- En los campos de parámetros proporcionados, ingresa los valores de tus parámetros.
- Haga clic en Ejecutar trabajo.
gcloud
En tu shell o terminal, ejecuta la plantilla:
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
Reemplaza lo siguiente:
JOB_NAME
: Es el nombre del trabajo que elijasVERSION
: Es la versión de la plantilla que deseas usar.Puedes usar los siguientes valores:
latest
para usar la última versión de la plantilla, que está disponible en la carpeta superior non-dated en el bucket gs://dataflow-templates-REGION_NAME/latest/- el nombre de la versión, como
2023-09-12-00_RC00
, para usar una versión específica de la plantilla, que se puede encontrar anidada en la carpeta superior con fecha correspondiente en el bucket gs://dataflow-templates-REGION_NAME/
REGION_NAME
: La región en la que deseas implementar tu trabajo de Dataflow, por ejemplo,us-central1
SPANNER_INSTANCE_ID
: ID de la instancia de SpannerSPANNER_DATABASE
: base de datos de SpannerSPANNER_METADATA_INSTANCE_ID
: ID de la instancia de metadatos de SpannerSPANNER_METADATA_DATABASE
: base de datos de metadatos de SpannerSPANNER_CHANGE_STREAM
: Flujo de cambios de SpannerPUBSUB_TOPIC
: Es el tema de Pub/Sub para la salida de los flujos de cambios.
API
Para ejecutar la plantilla con la API de REST, envía una solicitud POST HTTP. Para obtener más información de la API y sus permisos de autorización, consulta 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", } }
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto de Google Cloud en el que deseas ejecutar el trabajo de Dataflow.JOB_NAME
: Es el nombre del trabajo que elijasVERSION
: Es la versión de la plantilla que deseas usar.Puedes usar los siguientes valores:
latest
para usar la última versión de la plantilla, que está disponible en la carpeta superior non-dated en el bucket gs://dataflow-templates-REGION_NAME/latest/- el nombre de la versión, como
2023-09-12-00_RC00
, para usar una versión específica de la plantilla, que se puede encontrar anidada en la carpeta superior con fecha correspondiente en el bucket gs://dataflow-templates-REGION_NAME/
LOCATION
: La región en la que deseas implementar tu trabajo de Dataflow, por ejemplo,us-central1
SPANNER_INSTANCE_ID
: ID de la instancia de SpannerSPANNER_DATABASE
: base de datos de SpannerSPANNER_METADATA_INSTANCE_ID
: ID de la instancia de metadatos de SpannerSPANNER_METADATA_DATABASE
: base de datos de metadatos de SpannerSPANNER_CHANGE_STREAM
: Flujo de cambios de SpannerPUBSUB_TOPIC
: Es el tema de Pub/Sub para la salida de los flujos de cambios.
¿Qué sigue?
- Obtén información sobre las plantillas de Dataflow.
- Consulta la lista de plantillas que proporciona Google.