La plantilla de conectividad de bases de datos Java (JDBC) a Pub/Sub es un flujo de procesamiento por lotes que ingiere datos de una fuente JDBC y escribe los registros resultantes en un tema de Pub/Sub disponible como cadena JSON.
Requisitos del flujo de procesamiento
- La fuente JDBC debe existir antes de ejecutar el flujo de procesamiento.
- El tema de salida de Pub/Sub debe existir antes de ejecutar el flujo de procesamiento.
Parámetros de plantilla
Parámetros obligatorios
- driverClassName el nombre de la clase del controlador JDBC. Por ejemplo,
com.mysql.jdbc.Driver
. - connectionUrl la cadena de URL de conexión JDBC. Puedes introducir este valor como una cadena cifrada con una clave de Cloud KMS y, a continuación, codificada en Base64. Por ejemplo: 'echo -n "jdbc:mysql://some-host:3306/sampledb" | gcloud kms encrypt --location=
- 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
. - Consulta: la consulta que se va a ejecutar en la fuente para extraer los datos. Por ejemplo,
select * from sampledb.sample_table
. - outputTopic el tema de Pub/Sub en el que se publicará. Por ejemplo,
projects/<PROJECT_ID>/topics/<TOPIC_NAME>
.
Parámetros opcionales
- username: el nombre de usuario que se usará para la conexión JDBC. Puedes introducir este valor como una cadena cifrada con una clave de Cloud KMS y, a continuación, codificada en Base64. Por ejemplo,
echo -n 'some_username' | glcloud kms encrypt --location=my_location --keyring=mykeyring --key=mykey --plaintext-file=- --ciphertext-file=- | base64
. - password: la contraseña que se usará para la conexión JDBC. Puedes introducir este valor como una cadena cifrada con una clave de Cloud KMS y, a continuación, codificada en Base64. Por ejemplo,
echo -n 'some_password' | glcloud kms encrypt --location=my_location --keyring=mykeyring --key=mykey --plaintext-file=- --ciphertext-file=- | base64
. - connectionProperties la cadena de propiedades que se va a usar para la conexión JDBC. El formato de la cadena debe ser
[propertyName=property;]*
. Por ejemplo,unicode=true;characterEncoding=UTF-8
. - KMSEncryptionKey la clave de encriptado de Cloud KMS que se va a usar para desencriptar 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 y codificados en Base64. Por ejemplo,
projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key
. - disabledAlgorithms algoritmos separados por comas que se van a inhabilitar. Si se le asigna el valor
none
, no se inhabilita ningún algoritmo. Usa este parámetro con precaución, ya que los algoritmos inhabilitados de forma predeterminada pueden tener vulnerabilidades o problemas de rendimiento. Por ejemplo,SSLv3, RC4
. - extraFilesToStage rutas de Cloud Storage o secretos de Secret Manager separados por comas de los archivos que se van a almacenar en el trabajador. Estos archivos se guardan en el directorio /extra_files de cada trabajador. Por ejemplo,
gs://<BUCKET_NAME>/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 JDBC to Pub/Sub 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 jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/Jdbc_to_PubSub \ --region REGION_NAME \ --parameters \ driverClassName=DRIVER_CLASS_NAME,\ connectionURL=JDBC_CONNECTION_URL,\ driverJars=DRIVER_PATHS,\ username=CONNECTION_USERNAME,\ password=CONNECTION_PASSWORD,\ connectionProperties=CONNECTION_PROPERTIES,\ query=SOURCE_SQL_QUERY,\ outputTopic=OUTPUT_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 necesarioSOURCE_SQL_QUERY
: la consulta de SQL que se va a ejecutar en la base de datos de origenOUTPUT_TOPIC
: el Pub/Sub en el que se publicará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 { "launchParameter": { "jobName": "JOB_NAME", "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Jdbc_to_PubSub" "parameters": { "driverClassName": "DRIVER_CLASS_NAME", "connectionURL": "JDBC_CONNECTION_URL", "driverJars": "DRIVER_PATHS", "username": "CONNECTION_USERNAME", "password": "CONNECTION_PASSWORD", "connectionProperties": "CONNECTION_PROPERTIES", "query": "SOURCE_SQL_QUERY", "outputTopic": "OUTPUT_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 necesarioSOURCE_SQL_QUERY
: la consulta de SQL que se va a ejecutar en la base de datos de origenOUTPUT_TOPIC
: el Pub/Sub en el que se publicará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.