Plantilla de flujos de cambios de Spanner a Pub/Sub

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ámetro Descripción
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 cambio.
spannerDatabaseRole El rol de base de datos de Spanner que se usará cuando se ejecute la plantilla (opcional). 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 privilegio EXECUTE en la función de lectura de la transmisión de cambios. Si deseas obtener más información, consulta Control de acceso detallado para 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 El tema de Pub/Sub para el resultado de los flujos de cambios.
spannerProjectId (Opcional) El proyecto desde el que se leerán los flujos de cambio. Este es también el proyecto en el que 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.
spannerMetadataTableName (Opcional) 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.
rpcPriority (Opcional) La prioridad de solicitud para llamadas de Spanner. El valor debe ser uno de los siguientes: [HIGH, MEDIUM, LOW]. (Predeterminado: HIGH)
startTimestamp (Opcional). La fecha y hora de inicio, 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 (Opcional). La fecha y hora de finalización, 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.
outputFileFormat (Opcional) 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 (Opcional) La API de Pub/Sub que se usa para implementar la canalización. Las APIs permitidas son pubsubio y native_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 es pubsubio.

Ejecuta la plantilla

Consola

  1. Ve a la página Crear un trabajo a partir de una plantilla de Dataflow.
  2. Ir a Crear un trabajo a partir de una plantilla
  3. En el campo Nombre del trabajo, ingresa un nombre de trabajo único.
  4. 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.

  5. En el menú desplegable Plantilla de Dataflow, selecciona the Cloud Spanner change streams to Pub/Sub template.
  6. En los campos de parámetros proporcionados, ingresa los valores de tus parámetros.
  7. 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 elijas
  • VERSION: 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 Spanner
  • SPANNER_DATABASE: base de datos de Spanner
  • SPANNER_METADATA_INSTANCE_ID: ID de la instancia de metadatos de Spanner
  • SPANNER_METADATA_DATABASE: base de datos de metadatos de Spanner
  • SPANNER_CHANGE_STREAM: Flujo de cambios de Spanner
  • PUBSUB_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 HTTP POST. 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 elijas
  • VERSION: 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 Spanner
  • SPANNER_DATABASE: base de datos de Spanner
  • SPANNER_METADATA_INSTANCE_ID: ID de la instancia de metadatos de Spanner
  • SPANNER_METADATA_DATABASE: base de datos de metadatos de Spanner
  • SPANNER_CHANGE_STREAM: Flujo de cambios de Spanner
  • PUBSUB_TOPIC: Es el tema de Pub/Sub para la salida de los flujos de cambios.

¿Qué sigue?