La plantilla de Pub/Sub a Java Database Connectivity (JDBC) es un flujo de procesamiento en streaming que ingiere datos de una suscripción de Pub/Sub disponible como cadenas JSON y escribe los registros resultantes en JDBC.
Requisitos del flujo de procesamiento
- La suscripción de Pub/Sub debe existir antes de ejecutar el flujo de procesamiento.
- La fuente JDBC debe existir antes de ejecutar el flujo de procesamiento.
- El tema de mensajes fallidos de salida de Pub/Sub debe existir antes de ejecutar el flujo de procesamiento.
Parámetros de plantilla
Parámetro | Descripción |
---|---|
driverClassName |
El nombre de clase del controlador JDBC. Por ejemplo, com.mysql.jdbc.Driver . |
connectionUrl |
Cadena de URL de conexión JDBC. Por ejemplo, jdbc:mysql://some-host:3306/sampledb .
Puedes introducir este valor como una cadena cifrada con una clave de Cloud KMS y, a continuación, codificada en Base64.
Quita los espacios de la cadena codificada en Base64. |
driverJars |
Rutas de Cloud Storage separadas por comas para los controladores JDBC. Por ejemplo, gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar . |
username |
Opcional: nombre de usuario que se usará para la conexión JDBC. Puede enviar este valor cifrado con una clave de Cloud KMS como una cadena codificada en Base64. |
password |
Opcional: la contraseña que se usará para la conexión JDBC. Puede enviar este valor cifrado con una clave de Cloud KMS como una cadena codificada en Base64. |
connectionProperties |
Opcional: cadena de propiedades que se usará para la conexión JDBC. El formato de la cadena debe ser [propertyName=property;]* . Por ejemplo, unicode=true;characterEncoding=UTF-8 . |
statement |
Instrucción que se va a ejecutar en la base de datos. La instrucción debe especificar los nombres de las columnas de la tabla en cualquier orden. Solo se leen los valores de los nombres de columna especificados del JSON y se añaden a la instrucción. Por ejemplo, INSERT INTO tableName (column1, column2) VALUES (?,?) |
inputSubscription |
Suscripción de entrada de Pub/Sub de la que se van a leer datos, con el formato projects/<project>/subscriptions/<subscription> . |
outputDeadletterTopic |
El tema de Pub/Sub al que se reenviarán los mensajes que no se puedan entregar. Por ejemplo, projects/<project-id>/topics/<topic-name> . |
KMSEncryptionKey |
Opcional: clave de cifrado de Cloud KMS para descifrar el nombre de usuario, la contraseña y la cadena de conexión. Si se proporciona una clave de Cloud KMS, el nombre de usuario, la contraseña y la cadena de conexión deben proporcionarse cifrados. |
extraFilesToStage |
Rutas de Cloud Storage o secretos de Secret Manager separados por comas de los archivos que se van a organizar en el trabajador. Estos archivos se guardarán en el directorio /extra_files de cada trabajador. Por ejemplo, gs://<my-bucket>/file.txt,projects/<project-id>/secrets/<secret-id>/versions/<version-id> . |
Ejecutar la plantilla
Consola
- Ve a la página Crear tarea a partir de plantilla de Dataflow. Ir a Crear tarea a partir de plantilla
- En el campo Nombre de la tarea, introduce un nombre único.
- Opcional: En Endpoint regional, seleccione un valor en el menú desplegable. La región predeterminada es
us-central1
.Para ver una lista de las regiones en las que puedes ejecutar una tarea de Dataflow, consulta Ubicaciones de Dataflow.
- En el menú desplegable Plantilla de flujo de datos, seleccione the Pub/Sub to JDBC template.
- En los campos de parámetros proporcionados, introduzca los valores de los parámetros.
- Haz 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/PubSub_to_Jdbc \ --region REGION_NAME \ --parameters \ driverClassName=DRIVER_CLASS_NAME,\ connectionURL=JDBC_CONNECTION_URL,\ driverJars=DRIVER_PATHS,\ username=CONNECTION_USERNAME,\ password=CONNECTION_PASSWORD,\ connectionProperties=CONNECTION_PROPERTIES,\ statement=SQL_STATEMENT,\ inputSubscription=INPUT_SUBSCRIPTION,\ outputDeadletterTopic=OUTPUT_DEADLETTER_TOPIC,\ KMSEncryptionKey=KMS_ENCRYPTION_KEY
Haz los cambios siguientes:
JOB_NAME
: un nombre de trabajo único que elijasVERSION
: la versión de la plantilla que quieres usarPuedes usar los siguientes valores:
latest
para usar la última versión de la plantilla, que está disponible en la carpeta principal sin fecha del contenedor: 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 encuentra anidada en la carpeta principal correspondiente con la fecha en el bucket: gs://dataflow-templates-REGION_NAME/
REGION_NAME
: la región en la que quieras desplegar tu trabajo de Dataflow. Por ejemplo,us-central1
DRIVER_CLASS_NAME
: el nombre de la clase del controladorJDBC_CONNECTION_URL
: la URL de conexión de JDBCDRIVER_PATHS
: la ruta o las rutas de Cloud Storage separadas por comas de los controladores JDBCCONNECTION_USERNAME
: nombre de usuario de la conexión JDBCCONNECTION_PASSWORD
: la contraseña de la conexión JDBCCONNECTION_PROPERTIES
: las propiedades de conexión JDBC, si es necesarioSQL_STATEMENT
: la instrucción SQL que se va a ejecutar en la base de datosINPUT_SUBSCRIPTION
: la suscripción de entrada de Pub/Sub desde la que se va a leer.OUTPUT_DEADLETTER_TOPIC
: el Pub/Sub para reenviar los mensajes que no se puedan entregar.KMS_ENCRYPTION_KEY
: la clave de cifrado de Cloud KMS
API
Para ejecutar la plantilla mediante la API REST, envía una solicitud HTTP POST. Para obtener más información sobre la API y sus ámbitos de autorización, consulta projects.templates.launch
.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "jobName": "JOB_NAME", "parameters": { "driverClassName": "DRIVER_CLASS_NAME", "connectionURL": "JDBC_CONNECTION_URL", "driverJars": "DRIVER_PATHS", "username": "CONNECTION_USERNAME", "password": "CONNECTION_PASSWORD", "connectionProperties": "CONNECTION_PROPERTIES", "statement": "SQL_STATEMENT", "inputSubscription": "INPUT_SUBSCRIPTION", "outputDeadletterTopic": "OUTPUT_DEADLETTER_TOPIC", "KMSEncryptionKey":"KMS_ENCRYPTION_KEY" }, "environment": { "zone": "us-central1-f" }, }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto Google Cloud en el que quieres ejecutar la tarea de DataflowJOB_NAME
: un nombre de trabajo único que elijasVERSION
: la versión de la plantilla que quieres usarPuedes usar los siguientes valores:
latest
para usar la última versión de la plantilla, que está disponible en la carpeta principal sin fecha del contenedor: 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 encuentra anidada en la carpeta principal correspondiente con la fecha en el bucket: gs://dataflow-templates-REGION_NAME/
LOCATION
: la región en la que quieras desplegar tu trabajo de Dataflow. Por ejemplo,us-central1
DRIVER_CLASS_NAME
: el nombre de la clase del controladorJDBC_CONNECTION_URL
: la URL de conexión de JDBCDRIVER_PATHS
: la ruta o las rutas de Cloud Storage separadas por comas de los controladores JDBCCONNECTION_USERNAME
: nombre de usuario de la conexión JDBCCONNECTION_PASSWORD
: la contraseña de la conexión JDBCCONNECTION_PROPERTIES
: las propiedades de conexión JDBC, si es necesarioSQL_STATEMENT
: la instrucción SQL que se va a ejecutar en la base de datosINPUT_SUBSCRIPTION
: la suscripción de entrada de Pub/Sub desde la que se va a leer.OUTPUT_DEADLETTER_TOPIC
: el Pub/Sub para reenviar los mensajes que no se puedan entregar.KMS_ENCRYPTION_KEY
: la clave de cifrado de Cloud KMS
Siguientes pasos
- Consulta información sobre las plantillas de Dataflow.
- Consulta la lista de plantillas proporcionadas por Google.