Plantilla de Cloud Storage a JDBC

Usa la plantilla de Managed Service para Apache Spark de Cloud Storage a JDBC para extraer datos de Cloud Storage a bases de datos de JDBC.

Usa la plantilla

Ejecuta la plantilla con gcloud CLI o la API de Managed Service para Apache Spark.

gcloud

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Obligatorio. Tu Google Cloud ID del proyecto que aparece en la configuración de IAM.
  • REGION: Obligatorio. Región de Compute Engine.
  • SUBNET: Opcional Si no se especifica una subred, se selecciona la subred de la REGION especificada en la default red.

    Ejemplo: projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME

  • JDBC_CONNECTOR_CLOUD_STORAGE_PATH: Obligatorio. La ruta de acceso completa de Cloud Storage ruta, incluido el nombre de archivo, donde se almacena el jar del conector de JDBC. Puedes usar los siguientes comandos para descargar conectores de JDBC para subirlos a Cloud Storage:
    • MySQL:
      wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.tar.gz
            
    • Postgres SQL:
      wget https://jdbc.postgresql.org/download/postgresql-42.2.6.jar
            
    • Microsoft SQL Server:
        
      wget https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/6.4.0.jre8/mssql-jdbc-6.4.0.jre8.jar
            
    • Oracle:
      wget https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc8/21.7.0.0/ojdbc8-21.7.0.0.jar
            
  • CLOUD_STORAGE_PATH: Obligatorio. Ruta de acceso de Cloud Storage donde se almacenan los archivos de entrada.

    Ejemplo: gs://templates/cloud_storage_to_jdbc_input

  • FORMAT: Obligatorio. Formato de datos de salida. Opciones: avro, parquet, csv o orc. Valor predeterminado: avro. Nota: Si usas avro, debes agregar "file:///usr/lib/spark/connector/spark-avro.jar" a la marca jars de la gcloud CLI o al campo de la API.

    Ejemplo (el prefijo file:// hace referencia a un archivo jar de Managed Service para Apache Spark):

    --jars=file:///usr/lib/spark/connector/spark-avro.jar, [, ... other jars]
  • MODE: Opcional Modo de escritura para la salida de Cloud Storage. Opciones: Append, Overwrite, Ignore, o ErrorIfExists. Valor predeterminado: ErrorIfExists.
  • Las siguientes variables se usan para construir la obligatoria JDBC_CONNECTION_URL:
    • JDBC_HOST
    • JDBC_PORT
    • JDBC_DATABASE o, para Oracle, JDBC_SERVICE
    • JDBC_USERNAME
    • JDBC_PASSWORD

    Construye la JDBC_CONNECTION_URL con uno de los siguientes formatos específicos del conector:

    • MySQL:
      jdbc:mysql://JDBC_HOST:JDBC_PORT/JDBC_DATABASE?user=JDBC_USERNAME&password=JDBC_PASSWORD
              
    • Postgres SQL:
      jdbc:postgresql://JDBC_HOST:JDBC_PORT/JDBC_DATABASE?user=JDBC_USERNAME&password=JDBC_PASSWORD
              
    • Microsoft SQL Server:
      jdbc:sqlserver://JDBC_HOST:JDBC_PORT;databaseName=JDBC_DATABASE;user=JDBC_USERNAME;password=JDBC_PASSWORD
              
    • Oracle:
      jdbc:oracle:thin:@//JDBC_HOST:JDBC_PORT/JDBC_SERVICE?user=JDBC_USERNAME&password=
              
  • JDBC_TABLE: Obligatorio. Nombre de la tabla en la que se escribirá la salida.
  • DRIVER: Obligatorio. El controlador JDBC que se usa para la conexión:
    • MySQL:
      com.mysql.cj.jdbc.Driver
              
    • Postgres SQL:
      org.postgresql.Driver
              
    • Microsoft SQL Server:
        
      com.microsoft.sqlserver.jdbc.SQLServerDriver
              
    • Oracle:
      oracle.jdbc.driver.OracleDriver
              
  • TEMPLATE_VERSION: Obligatorio. Especifica latest para la versión más reciente de la plantilla, o la fecha de una versión específica, por ejemplo, 2023-03-17_v0.1.0-beta (visita gs://dataproc-templates-binaries o ejecuta gcloud storage ls gs://dataproc-templates-binaries para enumerar las versiones de plantilla disponibles).
  • LOG_LEVEL: Opcional Nivel de registro. Puede ser uno de ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, o WARN. Valor predeterminado: INFO.
  • NUM_PARTITIONS: Opcional La cantidad máxima de particiones que se pueden usar para el paralelismo de las escrituras de tablas. Si se especifica, este valor se usa para la conexión de salida de JDBC. El valor predeterminado son las particiones iniciales establecidas por Spark read().
  • BATCH_SIZE: Opcional Cantidad de registros que se insertarán por viaje de ida y vuelta. Valor predeterminado: 1000.
  • SERVICE_ACCOUNT: Opcional Si no se proporciona, se usa la cuenta de servicio predeterminada de Compute Engine.
  • PROPERTY y PROPERTY_VALUE: Opcional. Lista de pares property=value de Spark separados por comas.
  • LABEL y LABEL_VALUE: Opcional. Lista de pares label=value separados por comas.
  • KMS_KEY: Opcional La clave de Cloud Key Management Service que se usará para la encriptación. Si no se especifica una clave, los datos en reposo se encriptan con una Google-owned and Google-managed encryption key.

    Ejemplo: projects/PROJECT_ID/regions/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud dataproc batches submit spark \
    --class=com.google.cloud.dataproc.templates.main.DataProcTemplate \
    --project="PROJECT_ID" \
    --region="REGION" \
    --version="2.3" \
    --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar,JDBC_CONNECTOR_CLOUD_STORAGE_PATH" \
    --subnet="SUBNET" \
    --kms-key="KMS_KEY" \
    --service-account="SERVICE_ACCOUNT" \
    --properties="PROPERTY=PROPERTY_VALUE" \
    --labels="LABEL=LABEL_VALUE" \
    -- --template=GCSTOJDBC \
    --templateProperty project.id="PROJECT_ID" \
    --templateProperty log.level="LOG_LEVEL" \
    --templateProperty gcs.jdbc.input.location="CLOUD_STORAGE_PATH" \
    --templateProperty gcs.jdbc.input.format="FORMAT" \
    --templateProperty gcs.jdbc.output.saveMode="MODE" \
    --templateProperty gcs.jdbc.output.url="JDBC_CONNECTION_URL" \
    --templateProperty gcs.jdbc.output.table="JDBC_TABLE" \
    --templateProperty gcs.jdbc.output.driver="DRIVER" \
    --templateProperty gcs.jdbc.spark.partitions="NUM_PARTITIONS" \
    --templateProperty gcs.jdbc.output.batchInsertSize="BATCH_SIZE"

Windows (PowerShell)

gcloud dataproc batches submit spark `
    --class=com.google.cloud.dataproc.templates.main.DataProcTemplate `
    --project="PROJECT_ID" `
    --region="REGION" `
    --version="2.3" `
    --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar,JDBC_CONNECTOR_CLOUD_STORAGE_PATH" `
    --subnet="SUBNET" `
    --kms-key="KMS_KEY" `
    --service-account="SERVICE_ACCOUNT" `
    --properties="PROPERTY=PROPERTY_VALUE" `
    --labels="LABEL=LABEL_VALUE" `
    -- --template=GCSTOJDBC `
    --templateProperty project.id="PROJECT_ID" `
    --templateProperty log.level="LOG_LEVEL" `
    --templateProperty gcs.jdbc.input.location="CLOUD_STORAGE_PATH" `
    --templateProperty gcs.jdbc.input.format="FORMAT" `
    --templateProperty gcs.jdbc.output.saveMode="MODE" `
    --templateProperty gcs.jdbc.output.url="JDBC_CONNECTION_URL" `
    --templateProperty gcs.jdbc.output.table="JDBC_TABLE" `
    --templateProperty gcs.jdbc.output.driver="DRIVER" `
    --templateProperty gcs.jdbc.spark.partitions="NUM_PARTITIONS" `
    --templateProperty gcs.jdbc.output.batchInsertSize="BATCH_SIZE"

Windows (cmd.exe)

gcloud dataproc batches submit spark ^
    --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ^
    --project="PROJECT_ID" ^
    --region="REGION" ^
    --version="2.3" ^
    --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar,JDBC_CONNECTOR_CLOUD_STORAGE_PATH" ^
    --subnet="SUBNET" ^
    --kms-key="KMS_KEY" ^
    --service-account="SERVICE_ACCOUNT" ^
    --properties="PROPERTY=PROPERTY_VALUE" ^
    --labels="LABEL=LABEL_VALUE" ^
    -- --template=GCSTOJDBC ^
    --templateProperty project.id="PROJECT_ID" ^
    --templateProperty log.level="LOG_LEVEL" ^
    --templateProperty gcs.jdbc.input.location="CLOUD_STORAGE_PATH" ^
    --templateProperty gcs.jdbc.input.format="FORMAT" ^
    --templateProperty gcs.jdbc.output.saveMode="MODE" ^
    --templateProperty gcs.jdbc.output.url="JDBC_CONNECTION_URL" ^
    --templateProperty gcs.jdbc.output.table="JDBC_TABLE" ^
    --templateProperty gcs.jdbc.output.driver="DRIVER" ^
    --templateProperty gcs.jdbc.spark.partitions="NUM_PARTITIONS" ^
    --templateProperty gcs.jdbc.output.batchInsertSize="BATCH_SIZE"

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Obligatorio. Tu Google Cloud ID del proyecto que aparece en la configuración de IAM.
  • REGION: Obligatorio. Región de Compute Engine.
  • SUBNET: Opcional Si no se especifica una subred, se selecciona la subred de la REGION especificada en la default red.

    Ejemplo: projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME

  • JDBC_CONNECTOR_CLOUD_STORAGE_PATH: Obligatorio. La ruta de acceso completa de Cloud Storage ruta, incluido el nombre de archivo, donde se almacena el jar del conector de JDBC. Puedes usar los siguientes comandos para descargar conectores de JDBC para subirlos a Cloud Storage:
    • MySQL:
      wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.tar.gz
            
    • Postgres SQL:
      wget https://jdbc.postgresql.org/download/postgresql-42.2.6.jar
            
    • Microsoft SQL Server:
        
      wget https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/6.4.0.jre8/mssql-jdbc-6.4.0.jre8.jar
            
    • Oracle:
      wget https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc8/21.7.0.0/ojdbc8-21.7.0.0.jar
            
  • CLOUD_STORAGE_PATH: Obligatorio. Ruta de acceso de Cloud Storage donde se almacenan los archivos de entrada.

    Ejemplo: gs://templates/cloud_storage_to_jdbc_input

  • FORMAT: Obligatorio. Formato de datos de salida. Opciones: avro, parquet, csv o orc. Valor predeterminado: avro. Nota: Si usas avro, debes agregar "file:///usr/lib/spark/connector/spark-avro.jar" a la marca jars de la gcloud CLI o al campo de la API.

    Ejemplo (el prefijo file:// hace referencia a un archivo jar de Managed Service para Apache Spark):

    --jars=file:///usr/lib/spark/connector/spark-avro.jar, [, ... other jars]
  • MODE: Opcional Modo de escritura para la salida de Cloud Storage. Opciones: Append, Overwrite, Ignore, o ErrorIfExists. Valor predeterminado: ErrorIfExists.
  • Las siguientes variables se usan para construir la obligatoria JDBC_CONNECTION_URL:
    • JDBC_HOST
    • JDBC_PORT
    • JDBC_DATABASE o, para Oracle, JDBC_SERVICE
    • JDBC_USERNAME
    • JDBC_PASSWORD

    Construye la JDBC_CONNECTION_URL con uno de los siguientes formatos específicos del conector:

    • MySQL:
      jdbc:mysql://JDBC_HOST:JDBC_PORT/JDBC_DATABASE?user=JDBC_USERNAME&password=JDBC_PASSWORD
              
    • Postgres SQL:
      jdbc:postgresql://JDBC_HOST:JDBC_PORT/JDBC_DATABASE?user=JDBC_USERNAME&password=JDBC_PASSWORD
              
    • Microsoft SQL Server:
      jdbc:sqlserver://JDBC_HOST:JDBC_PORT;databaseName=JDBC_DATABASE;user=JDBC_USERNAME;password=JDBC_PASSWORD
              
    • Oracle:
      jdbc:oracle:thin:@//JDBC_HOST:JDBC_PORT/JDBC_SERVICE?user=JDBC_USERNAME&password=
              
  • JDBC_TABLE: Obligatorio. Nombre de la tabla en la que se escribirá la salida.
  • DRIVER: Obligatorio. El controlador JDBC que se usa para la conexión:
    • MySQL:
      com.mysql.cj.jdbc.Driver
              
    • Postgres SQL:
      org.postgresql.Driver
              
    • Microsoft SQL Server:
        
      com.microsoft.sqlserver.jdbc.SQLServerDriver
              
    • Oracle:
      oracle.jdbc.driver.OracleDriver
              
  • TEMPLATE_VERSION: Obligatorio. Especifica latest para la versión más reciente de la plantilla, o la fecha de una versión específica, por ejemplo, 2023-03-17_v0.1.0-beta (visita gs://dataproc-templates-binaries o ejecuta gcloud storage ls gs://dataproc-templates-binaries para enumerar las versiones de plantilla disponibles).
  • LOG_LEVEL: Opcional Nivel de registro. Puede ser uno de ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, o WARN. Valor predeterminado: INFO.
  • NUM_PARTITIONS: Opcional La cantidad máxima de particiones que se pueden usar para el paralelismo de las escrituras de tablas. Si se especifica, este valor se usa para la conexión de salida de JDBC. El valor predeterminado son las particiones iniciales establecidas por Spark read().
  • BATCH_SIZE: Opcional Cantidad de registros que se insertarán por viaje de ida y vuelta. Valor predeterminado: 1000.
  • SERVICE_ACCOUNT: Opcional Si no se proporciona, se usa la cuenta de servicio predeterminada de Compute Engine.
  • PROPERTY y PROPERTY_VALUE: Opcional. Lista de pares property=value de Spark separados por comas.
  • LABEL y LABEL_VALUE: Opcional. Lista de pares label=value separados por comas.
  • KMS_KEY: Opcional La clave de Cloud Key Management Service que se usará para la encriptación. Si no se especifica una clave, los datos en reposo se encriptan con una Google-owned and Google-managed encryption key.

    Ejemplo: projects/PROJECT_ID/regions/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

Método HTTP y URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/batches

Cuerpo JSON de la solicitud:


{
  "environmentConfig": {
    "executionConfig": {
      "subnetworkUri": "SUBNET",
      "kmsKey": "KMS_KEY",
      "serviceAccount": "SERVICE_ACCOUNT"
    }
  },
  "labels": {
    "LABEL": "LABEL_VALUE"
  },
  "runtimeConfig": {
    "version": "2.3",
    "properties": {
      "PROPERTY": "PROPERTY_VALUE"
    }
  },
  "sparkBatch": {
    "mainClass": "com.google.cloud.dataproc.templates.main.DataProcTemplate",
    "args": [
      "--template=GCSTOJDBC",
      "--templateProperty","project.id=PROJECT_ID",
      "--templateProperty","log.level=LOG_LEVEL",
      "--templateProperty","gcs.jdbc.input.location=CLOUD_STORAGE_PATH",
      "--templateProperty","gcs.jdbc.input.format=FORMAT",
      "--templateProperty","gcs.jdbc.output.saveMode=MODE",
      "--templateProperty","gcs.jdbc.output.url=JDBC_CONNECTION_URL",
      "--templateProperty","gcs.jdbc.output.table=JDBC_TABLE",
      "--templateProperty","gcs.jdbc.output.driver=DRIVER",
      "--templateProperty","gcs.jdbc.spark.partitions=NUM_PARTITIONS",
      "--templateProperty","gcs.jdbc.output.batchInsertSize=BATCH_SIZE"
    ],
    "jarFileUris": [
      "gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar", "JDBC_CONNECTOR_CLOUD_STORAGE_PATH"
    ]
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:


{
  "name": "projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.dataproc.v1.BatchOperationMetadata",
    "batch": "projects/PROJECT_ID/locations/REGION/batches/BATCH_ID",
    "batchUuid": "de8af8d4-3599-4a7c-915c-798201ed1583",
    "createTime": "2023-02-24T03:31:03.440329Z",
    "operationType": "BATCH",
    "description": "Batch"
  }
}