Plantilla de Cloud Storage a JDBC
Usa la plantilla de Serverless for Apache Spark Cloud Storage to JDBC para extraer datos de Cloud Storage a bases de datos JDBC.
Usa la plantilla
Ejecuta la plantilla con gcloud CLI o la API de Dataproc.
gcloud
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Obligatorio. El ID de tu proyecto de Google Cloud 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 en la REGIÓN especificada en la red
default
.Ejemplo:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
- JDBC_CONNECTOR_CLOUD_STORAGE_PATH: Obligatorio. Ruta de acceso completa de Cloud Storage, incluido el nombre de archivo, en la que se almacena el archivo JAR del conector de JDBC. Puedes usar los siguientes comandos para descargar conectores JDBC para subirlos a Cloud Storage:
- MySQL:
wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.tar.gz
- SQL de Postgres:
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
- MySQL:
- CLOUD_STORAGE_PATH: Obligatorio. Ruta de acceso de Cloud Storage donde se almacenan los archivos de entrada.
Ejemplo:
gs://dataproc-templates/cloud_storage_to_jdbc_input
- FORMAT: Obligatorio. Es el formato de los datos de salida. Opciones:
avro
,parquet
,csv
oorc
. Valor predeterminado:avro
. Nota: Si esavro
, debes agregar "file:///usr/lib/spark/connector/spark-avro.jar
" a la marca de gcloud CLI o al campo de la APIjars
.Ejemplo (el prefijo
file://
hace referencia a un archivo .jar de Serverless para Apache Spark):--jars=file:///usr/lib/spark/connector/spark-avro.jar,
[, ... otros frascos] - MODE: Opcional Modo de escritura para la salida de Cloud Storage.
Opciones:
Append
,Overwrite
,Ignore
oErrorIfExists
. Valor predeterminado:ErrorIfExists
. - Las siguientes variables se usan para construir el JDBC_CONNECTION_URL requerido:
- JDBC_HOST
- JDBC_PORT
- JDBC_DATABASE o, en el caso de Oracle,JDBC_SERVICE
- JDBC_USERNAME
- JDBC_PASSWORD
Construye el 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
- SQL de Postgres:
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án los resultados.
- DRIVER: Obligatorio. El controlador JDBC que se usa para la conexión:
- MySQL:
com.mysql.cj.jdbc.Driver
- SQL de Postgres:
org.postgresql.Driver
- Microsoft SQL Server:
com.microsoft.sqlserver.jdbc.SQLServerDriver
- Oracle:
oracle.jdbc.driver.OracleDriver
- MySQL:
- TEMPLATE_VERSION: Obligatorio. Especifica
latest
para la versión de plantilla más reciente o la fecha de una versión específica, por ejemplo,2023-03-17_v0.1.0-beta
(visita gs://dataproc-templates-binaries o ejecutagcloud storage ls gs://dataproc-templates-binaries
para enumerar las versiones de plantilla disponibles). - LOG_LEVEL: Opcional Es el nivel de registro. Puede ser uno de los siguientes:
ALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
oWARN
. Valor predeterminado:INFO
. - NUM_PARTITIONS: Opcional Es 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. Predeterminado:
1000
. - SERVICE_ACCOUNT: Opcional Si no se proporciona, se usa la cuenta de servicio de Compute Engine predeterminada.
- PROPERTY y PROPERTY_VALUE:
Opcional. Lista de pares propiedad de Spark=
value
separados por comas. - LABEL y LABEL_VALUE:
Opcional. Lista de pares
label
=value
separados por comas. -
KMS_KEY: Opcional Es la clave de Cloud Key Management Service que se usará para la encriptación. Si no se especifica una clave, los datos se encriptan en reposo con un 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="1.2" \ --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="1.2" ` --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="1.2" ^ --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. El ID de tu proyecto de Google Cloud 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 en la REGIÓN especificada en la red
default
.Ejemplo:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
- JDBC_CONNECTOR_CLOUD_STORAGE_PATH: Obligatorio. Ruta de acceso completa de Cloud Storage, incluido el nombre de archivo, en la que se almacena el archivo JAR del conector de JDBC. Puedes usar los siguientes comandos para descargar conectores JDBC para subirlos a Cloud Storage:
- MySQL:
wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.tar.gz
- SQL de Postgres:
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
- MySQL:
- CLOUD_STORAGE_PATH: Obligatorio. Ruta de acceso de Cloud Storage donde se almacenan los archivos de entrada.
Ejemplo:
gs://dataproc-templates/cloud_storage_to_jdbc_input
- FORMAT: Obligatorio. Es el formato de los datos de salida. Opciones:
avro
,parquet
,csv
oorc
. Valor predeterminado:avro
. Nota: Si esavro
, debes agregar "file:///usr/lib/spark/connector/spark-avro.jar
" a la marca de gcloud CLI o al campo de la APIjars
.Ejemplo (el prefijo
file://
hace referencia a un archivo .jar de Serverless para Apache Spark):--jars=file:///usr/lib/spark/connector/spark-avro.jar,
[, ... otros frascos] - MODE: Opcional Modo de escritura para la salida de Cloud Storage.
Opciones:
Append
,Overwrite
,Ignore
oErrorIfExists
. Valor predeterminado:ErrorIfExists
. - Las siguientes variables se usan para construir el JDBC_CONNECTION_URL requerido:
- JDBC_HOST
- JDBC_PORT
- JDBC_DATABASE o, en el caso de Oracle,JDBC_SERVICE
- JDBC_USERNAME
- JDBC_PASSWORD
Construye el 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
- SQL de Postgres:
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án los resultados.
- DRIVER: Obligatorio. El controlador JDBC que se usa para la conexión:
- MySQL:
com.mysql.cj.jdbc.Driver
- SQL de Postgres:
org.postgresql.Driver
- Microsoft SQL Server:
com.microsoft.sqlserver.jdbc.SQLServerDriver
- Oracle:
oracle.jdbc.driver.OracleDriver
- MySQL:
- TEMPLATE_VERSION: Obligatorio. Especifica
latest
para la versión de plantilla más reciente o la fecha de una versión específica, por ejemplo,2023-03-17_v0.1.0-beta
(visita gs://dataproc-templates-binaries o ejecutagcloud storage ls gs://dataproc-templates-binaries
para enumerar las versiones de plantilla disponibles). - LOG_LEVEL: Opcional Es el nivel de registro. Puede ser uno de los siguientes:
ALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
oWARN
. Valor predeterminado:INFO
. - NUM_PARTITIONS: Opcional Es 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. Predeterminado:
1000
. - SERVICE_ACCOUNT: Opcional Si no se proporciona, se usa la cuenta de servicio de Compute Engine predeterminada.
- PROPERTY y PROPERTY_VALUE:
Opcional. Lista de pares propiedad de Spark=
value
separados por comas. - LABEL y LABEL_VALUE:
Opcional. Lista de pares
label
=value
separados por comas. -
KMS_KEY: Opcional Es la clave de Cloud Key Management Service que se usará para la encriptación. Si no se especifica una clave, los datos se encriptan en reposo con un 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": "1.2", "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" } }