Plantilla de Cloud Storage a JDBC
Usa la plantilla de Cloud Storage a JDBC de Serverless para Apache Spark para extraer datos de Cloud Storage a bases de datos JDBC.
Usar la plantilla
Ejecuta la plantilla con la CLI de gcloud o la API de Dataproc.
gcloud
Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
- PROJECT_ID: obligatorio. El ID de tu proyecto, que aparece en la sección Configuración de gestión de identidades y accesos. Google Cloud
- REGION: obligatorio. Región de Compute Engine.
- SUBNET: opcional. Si no se especifica ninguna subred, se seleccionará la subred de la red
default
de la región especificada.Ejemplo:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
- JDBC_CONNECTOR_CLOUD_STORAGE_PATH: obligatorio. Ruta completa de Cloud Storage, incluido el nombre de archivo, donde se almacena el archivo JAR del conector JDBC. Puedes usar los siguientes comandos para descargar conectores JDBC y 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
- MySQL:
- CLOUD_STORAGE_PATH: obligatorio. Ruta de Cloud Storage
donde se almacenan los archivos de entrada.
Ejemplo:
gs://dataproc-templates/cloud_storage_to_jdbc_input
- FORMAT: obligatorio. Formato de los datos de salida. Opciones:
avro
,parquet
,csv
oorc
. Valor predeterminado:avro
. Nota: Siavro
, debes añadir "file:///usr/lib/spark/connector/spark-avro.jar
" a la marcajars
de la CLI de gcloud o al campo de la API.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 de la salida de Cloud Storage.
Opciones:
Append
,Overwrite
,Ignore
oErrorIfExists
. Valor predeterminado:ErrorIfExists
. - Las siguientes variables se usan para crear el JDBC_CONNECTION_URL obligatorio:
- JDBC_HOST
- JDBC_PORT
- JDBC_DATABASE o, en el caso de Oracle, JDBC_SERVICE
- JDBC_USERNAME
- JDBC_PASSWORD
Crea 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
- 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án los resultados.
- 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
- MySQL:
- TEMPLATE_VERSION: obligatorio. Especifique
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
). Consulte gs://dataproc-templates-binaries o ejecutegcloud storage ls gs://dataproc-templates-binaries
para ver una lista de las versiones de plantilla disponibles. - LOG_LEVEL: opcional. Nivel de registro. Puede ser uno de los siguientes:
ALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
oWARN
. Valor predeterminado:INFO
. - NUM_PARTITIONS: opcional. Número máximo 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 JDBC. El valor predeterminado son las particiones iniciales definidas por Spark
read()
. - BATCH_SIZE: opcional. Número 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 propiedad de Spark=
value
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 va a usar para el cifrado. Si no se especifica ninguna clave, los datos se cifran en reposo 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="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 los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: obligatorio. El ID de tu proyecto, que aparece en la sección Configuración de gestión de identidades y accesos. Google Cloud
- REGION: obligatorio. Región de Compute Engine.
- SUBNET: opcional. Si no se especifica ninguna subred, se seleccionará la subred de la red
default
de la región especificada.Ejemplo:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
- JDBC_CONNECTOR_CLOUD_STORAGE_PATH: obligatorio. Ruta completa de Cloud Storage, incluido el nombre de archivo, donde se almacena el archivo JAR del conector JDBC. Puedes usar los siguientes comandos para descargar conectores JDBC y 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
- MySQL:
- CLOUD_STORAGE_PATH: obligatorio. Ruta de Cloud Storage
donde se almacenan los archivos de entrada.
Ejemplo:
gs://dataproc-templates/cloud_storage_to_jdbc_input
- FORMAT: obligatorio. Formato de los datos de salida. Opciones:
avro
,parquet
,csv
oorc
. Valor predeterminado:avro
. Nota: Siavro
, debes añadir "file:///usr/lib/spark/connector/spark-avro.jar
" a la marcajars
de la CLI de gcloud o al campo de la API.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 de la salida de Cloud Storage.
Opciones:
Append
,Overwrite
,Ignore
oErrorIfExists
. Valor predeterminado:ErrorIfExists
. - Las siguientes variables se usan para crear el JDBC_CONNECTION_URL obligatorio:
- JDBC_HOST
- JDBC_PORT
- JDBC_DATABASE o, en el caso de Oracle, JDBC_SERVICE
- JDBC_USERNAME
- JDBC_PASSWORD
Crea 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
- 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án los resultados.
- 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
- MySQL:
- TEMPLATE_VERSION: obligatorio. Especifique
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
). Consulte gs://dataproc-templates-binaries o ejecutegcloud storage ls gs://dataproc-templates-binaries
para ver una lista de las versiones de plantilla disponibles. - LOG_LEVEL: opcional. Nivel de registro. Puede ser uno de los siguientes:
ALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
oWARN
. Valor predeterminado:INFO
. - NUM_PARTITIONS: opcional. Número máximo 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 JDBC. El valor predeterminado son las particiones iniciales definidas por Spark
read()
. - BATCH_SIZE: opcional. Número 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 propiedad de Spark=
value
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 va a usar para el cifrado. Si no se especifica ninguna clave, los datos se cifran en reposo 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": "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, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "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" } }