Modello JDBC to Cloud Storage
Utilizza il modello Serverless per Apache Spark JDBC to Cloud Storage per estrarre i dati dai database JDBC a Cloud Storage.
Questo modello supporta i seguenti database come input:
- MySQL
- PostgreSQL
- Microsoft SQL Server
- Oracle
Utilizzare il modello
Esegui il modello utilizzando gcloud CLI o l'API Dataproc.
gcloud
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- PROJECT_ID: obbligatorio. Il tuo ID progetto Google Cloud elencato nelle impostazioni IAM.
- REGION: obbligatorio. Regione Compute Engine.
- SUBNET: (Facoltativo) Se non viene specificata una subnet, viene selezionata la subnet 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 file JAR del connettore JDBC. Puoi utilizzare i seguenti comandi per scaricare
i connettori JDBC per il caricamento in 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:
- Le seguenti variabili vengono utilizzate per creare il
JDBC_CONNECTION_URL richiesto:
- JDBC_HOST
- JDBC_PORT
- JDBC_DATABASE o, per Oracle, JDBC_SERVICE
- JDBC_USERNAME
- JDBC_PASSWORD
Costruisci JDBC_CONNECTION_URL utilizzando uno dei seguenti formati specifici del connettore:
- 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=
- DRIVER: obbligatorio. Il driver JDBC utilizzato per
la connessione:
- 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:
- FORMAT: obbligatorio. Formato dei dati di output. Opzioni:
avro,parquet,csvojson. Predefinito:avro. Nota:seavro, devi aggiungere "file:///usr/lib/spark/connector/spark-avro.jar" al flag gcloud CLI o al campo APIjars.Esempio (il prefisso
file://fa riferimento a un file JAR di Serverless per Apache Spark):--jars=file:///usr/lib/spark/connector/spark-avro.jar,[, ... other jars] - MODE: obbligatorio. Modalità di scrittura per l'output Cloud Storage.
Opzioni:
append,overwrite,ignore, oerrorifexists. - TEMPLATE_VERSION: obbligatorio. Specifica
latestper l'ultima versione del modello o la data di una versione specifica, ad esempio2023-03-17_v0.1.0-beta(visita gs://dataproc-templates-binaries o eseguigcloud storage ls gs://dataproc-templates-binariesper elencare le versioni del modello disponibili). - CLOUD_STORAGE_OUTPUT_PATH: obbligatorio. Percorso Cloud Storage
in cui verranno archiviati gli output.
Esempio:
gs://dataproc-templates/jdbc_to_cloud_storage_output - LOG_LEVEL: (Facoltativo) Livello di logging. Può essere uno dei seguenti valori:
ALL,DEBUG,ERROR,FATAL,INFO,OFF,TRACEoWARN. Predefinito:INFO. - INPUT_PARTITION_COLUMN,
LOWERBOUND,
UPPERBOUND,
NUM_PARTITIONS: facoltativo. Se utilizzati, devono essere specificati 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.
- LIMITE SUPERIORE:limite superiore della colonna di partizione della tabella di input JDBC utilizzato per decidere la dimensione della 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 JDBC di input e output. Predefinito:
10.
- OUTPUT_PARTITION_COLUMN: (Facoltativo) Nome della colonna di partizione di output.
- FETCHSIZE: (Facoltativo) Il numero di righe da recuperare per viaggio di andata e ritorno. Valore predefinito: 10.
- QUERY o QUERY_FILE: obbligatorio.
Imposta
QUERYoQUERY_FILEper 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 e 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:
Facoltativo. Elenco separato da virgole di coppie
proprietà Spark=
value. - LABEL e LABEL_VALUE:
Facoltativo. Elenco separato da virgole di coppie
label=value. - JDBC_SESSION_INIT: (Facoltativo) Istruzione di inizializzazione della sessione per leggere i modelli Java.
-
KMS_KEY: (Facoltativo) La chiave Cloud Key Management Service da utilizzare per la crittografia. Se non viene specificata una chiave, i dati vengono criptati at-rest utilizzando una Google-owned and Google-managed encryption key.
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.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=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.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=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.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=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, apporta le sostituzioni seguenti:
- PROJECT_ID: obbligatorio. Il tuo ID progetto Google Cloud elencato nelle impostazioni IAM.
- REGION: obbligatorio. Regione Compute Engine.
- SUBNET: (Facoltativo) Se non viene specificata una subnet, viene selezionata la subnet 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 file JAR del connettore JDBC. Puoi utilizzare i seguenti comandi per scaricare
i connettori JDBC per il caricamento in 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:
- Le seguenti variabili vengono utilizzate per creare il
JDBC_CONNECTION_URL richiesto:
- JDBC_HOST
- JDBC_PORT
- JDBC_DATABASE o, per Oracle, JDBC_SERVICE
- JDBC_USERNAME
- JDBC_PASSWORD
Costruisci JDBC_CONNECTION_URL utilizzando uno dei seguenti formati specifici del connettore:
- 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=
- DRIVER: obbligatorio. Il driver JDBC utilizzato per
la connessione:
- 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:
- FORMAT: obbligatorio. Formato dei dati di output. Opzioni:
avro,parquet,csvojson. Predefinito:avro. Nota:seavro, devi aggiungere "file:///usr/lib/spark/connector/spark-avro.jar" al flag gcloud CLI o al campo APIjars.Esempio (il prefisso
file://fa riferimento a un file JAR di Serverless per Apache Spark):--jars=file:///usr/lib/spark/connector/spark-avro.jar,[, ... other jars] - MODE: obbligatorio. Modalità di scrittura per l'output Cloud Storage.
Opzioni:
append,overwrite,ignore, oerrorifexists. - TEMPLATE_VERSION: obbligatorio. Specifica
latestper l'ultima versione del modello o la data di una versione specifica, ad esempio2023-03-17_v0.1.0-beta(visita gs://dataproc-templates-binaries o eseguigcloud storage ls gs://dataproc-templates-binariesper elencare le versioni del modello disponibili). - CLOUD_STORAGE_OUTPUT_PATH: obbligatorio. Percorso Cloud Storage
in cui verranno archiviati gli output.
Esempio:
gs://dataproc-templates/jdbc_to_cloud_storage_output - LOG_LEVEL: (Facoltativo) Livello di logging. Può essere uno dei seguenti valori:
ALL,DEBUG,ERROR,FATAL,INFO,OFF,TRACEoWARN. Predefinito:INFO. - INPUT_PARTITION_COLUMN,
LOWERBOUND,
UPPERBOUND,
NUM_PARTITIONS: facoltativo. Se utilizzati, devono essere specificati 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.
- LIMITE SUPERIORE:limite superiore della colonna di partizione della tabella di input JDBC utilizzato per decidere la dimensione della 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 JDBC di input e output. Predefinito:
10.
- OUTPUT_PARTITION_COLUMN: (Facoltativo) Nome della colonna di partizione di output.
- FETCHSIZE: (Facoltativo) Il numero di righe da recuperare per viaggio di andata e ritorno. Valore predefinito: 10.
- QUERY o QUERY_FILE: obbligatorio.
Imposta
QUERYoQUERY_FILEper 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 e 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:
Facoltativo. Elenco separato da virgole di coppie
proprietà Spark=
value. - LABEL e LABEL_VALUE:
Facoltativo. Elenco separato da virgole di coppie
label=value. - JDBC_SESSION_INIT: (Facoltativo) Istruzione di inizializzazione della sessione per leggere i modelli Java.
-
KMS_KEY: (Facoltativo) La chiave Cloud Key Management Service da utilizzare per la crittografia. Se non viene specificata una chiave, i dati vengono criptati at-rest utilizzando una Google-owned and Google-managed encryption key.
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.2",
"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"
}
}