Modello JDBC a Cloud Storage
Usa il modello JDBC serverless di Dataproc in Cloud Storage per estrarre dati dai database JDBC su Cloud Storage.
Questo modello supporta i seguenti database come input:
- MySQL
- PostgreSQL
- Microsoft SQL Server
- Oracle
Utilizza il modello
Esegui il modello utilizzando gcloud CLI o l'API Dataproc.
gcloud
Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:
- PROJECT_ID: obbligatorio. L'ID del tuo progetto Google Cloud elencato nelle impostazioni IAM.
- REGION: obbligatorio. Regione di Compute Engine.
- SUBNET: facoltativo. Se non è specificata una subnet, viene selezionata quella specificata nella REGIONE specificata nella rete
default
.Esempio:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
- JDBC_CONNECTOR_CLOUD_STORAGE_PATH: obbligatorio. Il percorso Cloud Storage completo, incluso il nome file, in cui è archiviato il jar del connettore JDBC. Puoi utilizzare i seguenti comandi per scaricare i connettori JDBC per il caricamento su Cloud Storage:
- MySQL:
wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.tar.gz
- SQL 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:
- Le seguenti variabili vengono utilizzate per creare l'elemento
JDBC_CONNECTION_URL richiesto:
- JDBC_HOST
- JDBC_PORT
- JDBC_DATABASE oppure, per Oracle, JDBC_SERVICE
- JDBC_USERNAME
- JDBC_PASSWORD
Crea JDBC_CONNECTION_URL utilizzando uno dei seguenti formati specifici per il connettore:
- MySQL:
jdbc:mysql://JDBC_HOST:JDBC_PORT/JDBC_DATABASE?user=JDBC_USERNAME&password=JDBC_PASSWORD
- SQL 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=
- DRIVER: obbligatorio. Il driver JDBC utilizzato per la connessione:
- MySQL:
com.mysql.cj.jdbc.Driver
- SQL Postgres:
org.postgresql.Driver
- Microsoft SQL Server:
com.microsoft.sqlserver.jdbc.SQLServerDriver
- Oracle:
oracle.jdbc.driver.OracleDriver
- MySQL:
- FORMAT: obbligatorio. Formato dei dati di output. Opzioni:
avro
,parquet
,csv
ojson
. Valore predefinito:avro
. Nota: seavro
, devi aggiungere "file:///usr/lib/spark/external/spark-avro.jar
" al campo API o al flag dellgcloud CLIjars
.Esempio (il prefisso
file://
fa riferimento a un file jar di Dataproc Serverless):--jars=file:///usr/lib/spark/external/spark-avro.jar,
[, ... altri barattoli] - MODE: obbligatorio. Modalità di scrittura per l'output di Cloud Storage.
Opzioni:
append
,overwrite
,ignore
oerrorifexists
. - TEMPLATE_VERSION: obbligatorio. Specifica
latest
per la versione più recente del modello o la data di una versione specifica, ad esempio2023-03-17_v0.1.0-beta
(visita gs://dataproc-templates-binaries o eseguigsutil ls gs://dataproc-templates-binaries
per elencare le versioni disponibili dei modelli). - CLOUD_STORAGE_OUTPUT_PATH: obbligatorio. Percorso di Cloud Storage in cui verrà archiviato l'output.
Esempio:
gs://dataproc-templates/jdbc_to_cloud_storage_output
- LOG_LEVEL: facoltativo. Livello di logging. Può essere
ALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
oWARN
. Valore predefinito:INFO
. - INPUT_PARTITION_COLUMN,
LOWERBOUND,
UPPERBOUND,
NUM_PARTITIONS: facoltativi. Se utilizzati, è necessario specificare tutti i seguenti
parametri:
- INPUT_PARTITION_COLUMN: nome della colonna di partizione della tabella di input JDBC.
- LOWERBOUND: limite inferiore della colonna di partizione della tabella di input JDBC utilizzato per determinare l'intervallo di partizione.
- UPPERBOUND: limite superiore della colonna di partizione della tabella di input JDBC utilizzato per decidere l'intervallo di partizione.
- NUM_PARTITIONS: il numero massimo di partizioni che possono essere utilizzate per il parallelismo delle letture e delle scritture delle tabelle.
Se specificato, questo valore viene utilizzato per la connessione di input e di output JDBC. Valore predefinito:
10
.
- OUTPUT_PARTITION_COLUMN: facoltativo. Nome della colonna di partizione di output.
- FETCHSIZE: facoltativo. Numero di righe da recuperare per andata e ritorno. Valore predefinito: 10.
- QUERY o QUERY_FILE: obbligatorio.
Imposta
QUERY
oQUERY_FILE
per specificare la query da utilizzare per estrarre i dati da JDBC - TEMP_VIEW e TEMP_QUERY: facoltativi. Puoi utilizzare questi due parametri facoltativi per applicare una trasformazione Spark SQL durante il caricamento dei dati in Cloud Storage. TEMPVIEW deve essere uguale al nome della tabella utilizzato nella query, inoltre TEMP_QUERY è l'istruzione della query.
- SERVICE_ACCOUNT: facoltativo. Se non viene specificato, viene utilizzato l'account di servizio Compute Engine predefinito.
- PROPERTY e PROPERTY_VALUE:
facoltativi. Elenco separato da virgole di
proprietà Spark=
value
coppie. - LABEL e LABEL_VALUE:
facoltativi. Elenco separato da virgole di
label
=value
coppie. - JDBC_SESSION_INIT: facoltativo. Istruzione di inizializzazione della sessione per leggere i modelli Java.
-
KMS_KEY: facoltativo. La chiave di Cloud Key Management Service da utilizzare per la crittografia. Se non viene specificata una chiave, i dati vengono criptati at-rest mediante una chiave gestita da Google.
Esempio:
projects/PROJECT_ID/regions/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Esegui questo 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.1" \ --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=JDBCTOGCS \ --templateProperty project.id="PROJECT_ID" \ --templateProperty log.level="LOG_LEVEL" \ --templateProperty jdbctogcs.jdbc.url="JDBC_CONNECTION_URL" \ --templateProperty jdbctogcs.jdbc.driver.class.name="DRIVER" \ --templateProperty jdbctogcs.output.format="FORMAT" \ --templateProperty jdbctogcs.output.location="CLOUD_STORAGE_OUTPUT_PATH" \ --templateProperty jdbctogcs.sql="QUERY" \ --templateProperty jdbctogcs.sql.file="QUERY_FILE" \ --templateProperty jdbctogcs.sql.partitionColumn="INPUT_PARTITION_COLUMN" \ --templateProperty jdbctogcs.sql.lowerBound="LOWERBOUND" \ --templateProperty jdbctogcs.sql.upperBound="UPPERBOUND" \ --templateProperty jdbctogcs.jdbc.fetchsize="FETCHSIZE" \ --templateProperty jdbctogcs.sql.numPartitions="NUM_PARTITIONS" \ --templateProperty jdbctogcs.write.mode="MODE" \ --templateProperty dbctogcs.output.partition.col="OUTPUT_PARTITION_COLUMN" \ --templateProperty jdbctogcs.temp.table="TEMP_VIEW" \ --templateProperty jdbctogcs.temp.query="TEMP_QUERY"
Windows (PowerShell)
gcloud dataproc batches submit spark ` --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ` --project="PROJECT_ID" ` --region="REGION" ` --version="1.1" ` --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=JDBCTOGCS ` --templateProperty project.id="PROJECT_ID" ` --templateProperty log.level="LOG_LEVEL" ` --templateProperty jdbctogcs.jdbc.url="JDBC_CONNECTION_URL" ` --templateProperty jdbctogcs.jdbc.driver.class.name="DRIVER" ` --templateProperty jdbctogcs.output.format="FORMAT" ` --templateProperty jdbctogcs.output.location="CLOUD_STORAGE_OUTPUT_PATH" ` --templateProperty jdbctogcs.sql="QUERY" ` --templateProperty jdbctogcs.sql.file="QUERY_FILE" ` --templateProperty jdbctogcs.sql.partitionColumn="INPUT_PARTITION_COLUMN" ` --templateProperty jdbctogcs.sql.lowerBound="LOWERBOUND" ` --templateProperty jdbctogcs.sql.upperBound="UPPERBOUND" ` --templateProperty jdbctogcs.jdbc.fetchsize="FETCHSIZE" ` --templateProperty jdbctogcs.sql.numPartitions="NUM_PARTITIONS" ` --templateProperty jdbctogcs.write.mode="MODE" ` --templateProperty dbctogcs.output.partition.col="OUTPUT_PARTITION_COLUMN" ` --templateProperty jdbctogcs.temp.table="TEMP_VIEW" ` --templateProperty jdbctogcs.temp.query="TEMP_QUERY"
Windows (cmd.exe)
gcloud dataproc batches submit spark ^ --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ^ --project="PROJECT_ID" ^ --region="REGION" ^ --version="1.1" ^ --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=JDBCTOGCS ^ --templateProperty project.id="PROJECT_ID" ^ --templateProperty log.level="LOG_LEVEL" ^ --templateProperty jdbctogcs.jdbc.url="JDBC_CONNECTION_URL" ^ --templateProperty jdbctogcs.jdbc.driver.class.name="DRIVER" ^ --templateProperty jdbctogcs.output.format="FORMAT" ^ --templateProperty jdbctogcs.output.location="CLOUD_STORAGE_OUTPUT_PATH" ^ --templateProperty jdbctogcs.sql="QUERY" ^ --templateProperty jdbctogcs.sql.file="QUERY_FILE" ^ --templateProperty jdbctogcs.sql.partitionColumn="INPUT_PARTITION_COLUMN" ^ --templateProperty jdbctogcs.sql.lowerBound="LOWERBOUND" ^ --templateProperty jdbctogcs.sql.upperBound="UPPERBOUND" ^ --templateProperty jdbctogcs.jdbc.fetchsize="FETCHSIZE" ^ --templateProperty jdbctogcs.sql.numPartitions="NUM_PARTITIONS" ^ --templateProperty jdbctogcs.write.mode="MODE" ^ --templateProperty dbctogcs.output.partition.col="OUTPUT_PARTITION_COLUMN" ^ --templateProperty jdbctogcs.temp.table="TEMP_VIEW" ^ --templateProperty jdbctogcs.temp.query="TEMP_QUERY"
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: obbligatorio. L'ID del tuo progetto Google Cloud elencato nelle impostazioni IAM.
- REGION: obbligatorio. Regione di Compute Engine.
- SUBNET: facoltativo. Se non è specificata una subnet, viene selezionata quella specificata nella REGIONE specificata nella rete
default
.Esempio:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
- JDBC_CONNECTOR_CLOUD_STORAGE_PATH: obbligatorio. Il percorso Cloud Storage completo, incluso il nome file, in cui è archiviato il jar del connettore JDBC. Puoi utilizzare i seguenti comandi per scaricare i connettori JDBC per il caricamento su Cloud Storage:
- MySQL:
wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.tar.gz
- SQL 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:
- Le seguenti variabili vengono utilizzate per creare l'elemento
JDBC_CONNECTION_URL richiesto:
- JDBC_HOST
- JDBC_PORT
- JDBC_DATABASE oppure, per Oracle, JDBC_SERVICE
- JDBC_USERNAME
- JDBC_PASSWORD
Crea JDBC_CONNECTION_URL utilizzando uno dei seguenti formati specifici per il connettore:
- MySQL:
jdbc:mysql://JDBC_HOST:JDBC_PORT/JDBC_DATABASE?user=JDBC_USERNAME&password=JDBC_PASSWORD
- SQL 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=
- DRIVER: obbligatorio. Il driver JDBC utilizzato per la connessione:
- MySQL:
com.mysql.cj.jdbc.Driver
- SQL Postgres:
org.postgresql.Driver
- Microsoft SQL Server:
com.microsoft.sqlserver.jdbc.SQLServerDriver
- Oracle:
oracle.jdbc.driver.OracleDriver
- MySQL:
- FORMAT: obbligatorio. Formato dei dati di output. Opzioni:
avro
,parquet
,csv
ojson
. Valore predefinito:avro
. Nota: seavro
, devi aggiungere "file:///usr/lib/spark/external/spark-avro.jar
" al campo API o al flag dellgcloud CLIjars
.Esempio (il prefisso
file://
fa riferimento a un file jar di Dataproc Serverless):--jars=file:///usr/lib/spark/external/spark-avro.jar,
[, ... altri barattoli] - MODE: obbligatorio. Modalità di scrittura per l'output di Cloud Storage.
Opzioni:
append
,overwrite
,ignore
oerrorifexists
. - TEMPLATE_VERSION: obbligatorio. Specifica
latest
per la versione più recente del modello o la data di una versione specifica, ad esempio2023-03-17_v0.1.0-beta
(visita gs://dataproc-templates-binaries o eseguigsutil ls gs://dataproc-templates-binaries
per elencare le versioni disponibili dei modelli). - CLOUD_STORAGE_OUTPUT_PATH: obbligatorio. Percorso di Cloud Storage in cui verrà archiviato l'output.
Esempio:
gs://dataproc-templates/jdbc_to_cloud_storage_output
- LOG_LEVEL: facoltativo. Livello di logging. Può essere
ALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
oWARN
. Valore predefinito:INFO
. - INPUT_PARTITION_COLUMN,
LOWERBOUND,
UPPERBOUND,
NUM_PARTITIONS: facoltativi. Se utilizzati, è necessario specificare tutti i seguenti
parametri:
- INPUT_PARTITION_COLUMN: nome della colonna di partizione della tabella di input JDBC.
- LOWERBOUND: limite inferiore della colonna di partizione della tabella di input JDBC utilizzato per determinare l'intervallo di partizione.
- UPPERBOUND: limite superiore della colonna di partizione della tabella di input JDBC utilizzato per decidere l'intervallo di partizione.
- NUM_PARTITIONS: il numero massimo di partizioni che possono essere utilizzate per il parallelismo delle letture e delle scritture delle tabelle.
Se specificato, questo valore viene utilizzato per la connessione di input e di output JDBC. Valore predefinito:
10
.
- OUTPUT_PARTITION_COLUMN: facoltativo. Nome della colonna di partizione di output.
- FETCHSIZE: facoltativo. Numero di righe da recuperare per andata e ritorno. Valore predefinito: 10.
- QUERY o QUERY_FILE: obbligatorio.
Imposta
QUERY
oQUERY_FILE
per specificare la query da utilizzare per estrarre i dati da JDBC - TEMP_VIEW e TEMP_QUERY: facoltativi. Puoi utilizzare questi due parametri facoltativi per applicare una trasformazione Spark SQL durante il caricamento dei dati in Cloud Storage. TEMPVIEW deve essere uguale al nome della tabella utilizzato nella query, inoltre TEMP_QUERY è l'istruzione della query.
- SERVICE_ACCOUNT: facoltativo. Se non viene specificato, viene utilizzato l'account di servizio Compute Engine predefinito.
- PROPERTY e PROPERTY_VALUE:
facoltativi. Elenco separato da virgole di
proprietà Spark=
value
coppie. - LABEL e LABEL_VALUE:
facoltativi. Elenco separato da virgole di
label
=value
coppie. - JDBC_SESSION_INIT: facoltativo. Istruzione di inizializzazione della sessione per leggere i modelli Java.
-
KMS_KEY: facoltativo. La chiave di Cloud Key Management Service da utilizzare per la crittografia. Se non viene specificata una chiave, i dati vengono criptati at-rest mediante una chiave gestita da Google.
Esempio:
projects/PROJECT_ID/regions/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Metodo HTTP e URL:
POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/batches
Corpo JSON della richiesta:
{ "environmentConfig": { "executionConfig": { "subnetworkUri": "SUBNET", "kmsKey": "KMS_KEY", "serviceAccount": "SERVICE_ACCOUNT" } }, "labels": { "LABEL": "LABEL_VALUE" }, "runtimeConfig": { "version": "1.1", "properties": { "PROPERTY": "PROPERTY_VALUE" } }, "sparkBatch": { "mainClass": "com.google.cloud.dataproc.templates.main.DataProcTemplate", "args": [ "--template=JDBCTOGCS", "--templateProperty","log.level=LOG_LEVEL", "--templateProperty","project.id=PROJECT_ID", "--templateProperty","jdbctogcs.jdbc.url=JDBC_CONNECTION_URL", "--templateProperty","jdbctogcs.jdbc.driver.class.name=DRIVER", "--templateProperty","jdbctogcs.output.location=CLOUD_STORAGE_OUTPUT_PATH", "--templateProperty","jdbctogcs.write.mode=MODE", "--templateProperty","jdbctogcs.output.format=FORMAT", "--templateProperty","jdbctogcs.sql.numPartitions=NUM_PARTITIONS", "--templateProperty","jdbctogcs.jdbc.fetchsize=FETCHSIZE", "--templateProperty","jdbctogcs.sql=QUERY", "--templateProperty","jdbctogcs.sql.file=QUERY_FILE", "--templateProperty","jdbctogcs.sql.partitionColumn=INPUT_PARTITION_COLUMN", "--templateProperty","jdbctogcs.sql.lowerBound=LOWERBOUND", "--templateProperty","jdbctogcs.sql.upperBound=UPPERBOUND", "--templateProperty","jdbctogcs.output.partition.col=OUTPUT_PARTITION_COLUMN", "--templateProperty","jdbctogcs.temp.table=TEMP_VIEW", "--templateProperty","jdbctogcs.temp.query=TEMP_QUERY", "--templateProperty","jdbctogcs.jdbc.sessioninitstatement=JDBC_SESSION_INIT" ], "jarFileUris": [ "gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar", "JDBC_CONNECTOR_CLOUD_STORAGE_PATH" ] } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "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" } }