Plantilla de Java Database Connectivity (JDBC) a Pub/Sub

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

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

  5. En el menú desplegable Plantilla de flujo de datos, seleccione the JDBC to Pub/Sub template.
  6. En los campos de parámetros proporcionados, introduzca los valores de los parámetros.
  7. 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 elijas
  • VERSION: la versión de la plantilla que quieres usar

    Puedes 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 controlador
  • JDBC_CONNECTION_URL: la URL de conexión de JDBC
  • DRIVER_PATHS: la ruta o las rutas de Cloud Storage separadas por comas de los controladores JDBC
  • CONNECTION_USERNAME: nombre de usuario de la conexión JDBC
  • CONNECTION_PASSWORD: la contraseña de la conexión JDBC
  • CONNECTION_PROPERTIES: las propiedades de conexión JDBC, si es necesario
  • SOURCE_SQL_QUERY: la consulta de SQL que se va a ejecutar en la base de datos de origen
  • OUTPUT_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 Dataflow
  • JOB_NAME: un nombre de trabajo único que elijas
  • VERSION: la versión de la plantilla que quieres usar

    Puedes 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 controlador
  • JDBC_CONNECTION_URL: la URL de conexión de JDBC
  • DRIVER_PATHS: la ruta o las rutas de Cloud Storage separadas por comas de los controladores JDBC
  • CONNECTION_USERNAME: nombre de usuario de la conexión JDBC
  • CONNECTION_PASSWORD: la contraseña de la conexión JDBC
  • CONNECTION_PROPERTIES: las propiedades de conexión JDBC, si es necesario
  • SOURCE_SQL_QUERY: la consulta de SQL que se va a ejecutar en la base de datos de origen
  • OUTPUT_TOPIC: el Pub/Sub en el que se publicará
  • KMS_ENCRYPTION_KEY: la clave de cifrado de Cloud KMS

Siguientes pasos