Il modello JDBC to BigQuery è una pipeline batch che copia i dati da una tabella di database relazionale a una tabella BigQuery esistente. Questa pipeline utilizza JDBC per la connessione al database relazionale. Utilizza questo modello per copiare in BigQuery i dati da qualsiasi database relazionale con driver JDBC disponibili.
Per un ulteriore livello di protezione, puoi passare una chiave Cloud KMS, insieme a un nome utente, una password e parametri della stringa di connessione codificati in Base64 e criptati con la chiave Cloud KMS. Per ulteriori dettagli sulla crittografia di nome utente, password e parametri della stringa di connessione, consulta l'endpoint di crittografia dell'API Cloud KMS.
Requisiti della pipeline
- I driver JDBC per il database relazionale devono essere disponibili.
- La tabella BigQuery deve esistere prima dell'esecuzione della pipeline.
- La tabella BigQuery deve avere uno schema compatibile.
- Il database relazionale deve essere accessibile dalla subnet in cui viene eseguito Dataflow.
Parametri del modello
Parametro | Descrizione |
---|---|
driverJars |
L'elenco separato da virgole di file JAR del driver. Ad esempio:
gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar . |
driverClassName |
Il nome della classe del driver JDBC. Ad esempio: com.mysql.jdbc.Driver . |
connectionURL |
La stringa dell'URL di connessione JDBC. Ad esempio, jdbc:mysql://some-host:3306/sampledb .
Puoi passare questo valore come stringa criptata con una chiave Cloud KMS e poi codificata in Base64.
Rimuovi gli spazi vuoti dalla stringa codificata in Base64. Nota la differenza tra una stringa di connessione al database Oracle non RAC (jdbc:oracle:thin:@some-host:<port>:<sid> ) e una stringa di connessione al database Oracle RAC (jdbc:oracle:thin:@//some-host[:<port>]/<service_name> ). Ad esempio: jdbc:mysql://some-host:3306/sampledb . |
outputTable |
La posizione della tabella BigQuery in cui scrivere l'output. Il nome deve utilizzare il formato
<project>:<dataset>.<table_name> . Lo schema della tabella deve corrispondere agli oggetti di input. Ad
esempio: <my-project>:<my-dataset>.<my-table> . |
bigQueryLoadingTemporaryDirectory |
La directory temporanea per il processo di caricamento di BigQuery. Ad esempio:
gs://your-bucket/your-files/temp_dir . |
connectionProperties |
Facoltativo: la stringa delle proprietà da utilizzare per la connessione JDBC. Utilizza il formato della stringa [propertyName=property;]*. Ad esempio:
unicode=true;characterEncoding=UTF-8 . |
username |
Facoltativo: il nome utente da utilizzare per la connessione JDBC. Puoi passare questo valore criptato da una chiave Cloud KMS come stringa con codifica Base64. |
password |
Facoltativo: la password da utilizzare per la connessione JDBC. Puoi passare questo valore criptato da una chiave Cloud KMS come stringa con codifica Base64. |
query |
(Facoltativo) La query da eseguire sull'origine per estrarre i dati. Ad esempio: select * from sampledb.sample_table . |
KMSEncryptionKey |
(Facoltativo) La chiave di crittografia di Cloud KMS da utilizzare per decriptare il nome utente, la password e la stringa di connessione. Se passi in una chiave Cloud KMS,
il nome utente, la password e la stringa di connessione devono essere tutti criptati. Ad esempio:
projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key . |
useColumnAlias |
Facoltativo: se abilitato (impostato su true ), la pipeline utilizza l'alias di colonna ("AS") anziché il nome della colonna per mappare le righe a BigQuery. Il valore predefinito è false . |
isTruncate |
(Facoltativo) Se l'opzione è abilitata (impostata su true ), la pipeline viene troncata prima di caricare i dati in BigQuery. Il valore predefinito è false , che
causa l'aggiunta di dati da parte della pipeline. |
partitionColumn |
(Facoltativo) Se questo parametro viene fornito insieme a table , JdbcIO legge la tabella in parallelo eseguendo più istanze della query nella stessa tabella (sottoquery) utilizzando gli intervalli. Attualmente supporta solo Long colonne di partizione. |
table |
(Facoltativo) La tabella da cui leggere quando utilizzi le partizioni. Questo parametro accetta anche una sottoquery tra parentesi. Ad esempio: (select
id, name from Person come subq). |
numPartitions |
(Facoltativo) Il numero di partizioni. Con i limiti inferiore e superiore, questo valore forma gli incrementi di partizione per le espressioni della clausola WHERE generate
utilizzate per suddividere in modo uniforme la colonna di partizione. Quando l'input è inferiore a 1 , il numero viene impostato su 1 . |
lowerBound |
Facoltativo: il limite inferiore da utilizzare nello schema di partizione. Se non viene specificato, questo valore viene dedotto automaticamente da Apache Beam per i tipi supportati. |
upperBound |
Facoltativo: il limite superiore da utilizzare nello schema di partizione. Se non viene specificato, questo valore viene dedotto automaticamente da Apache Beam per i tipi supportati. |
disabledAlgorithms |
(Facoltativo) Algoritmi separati da virgole da disattivare. Se questo valore viene impostato su none , nessun algoritmo viene disattivato. Da usare con
cautela, perché gli algoritmi disattivati per impostazione predefinita sono noti per avere vulnerabilità o problemi di prestazioni. Ad
esempio: SSLv3, RC4 . |
extraFilesToStage |
(Facoltativo) Percorsi Cloud Storage o secret di Secret Manager separati da virgole per i file da inserire nel worker. Questi file vengono salvati nella directory /extra_files di ciascun worker. Ad esempio:
gs://your-bucket/file.txt,projects/project-id/secrets/secret-id/versions/version-id . |
useStorageWriteApi |
Facoltativo:
se true , la pipeline utilizza l'
API BigQuery Storage Write. Il valore predefinito è false . Per ulteriori informazioni, consulta la pagina relativa all'
utilizzo dell'API Storage Write.
|
useStorageWriteApiAtLeastOnce |
Facoltativo:
quando si utilizza l'API Storage Write, specifica la semantica di scrittura. Per utilizzare la
semantica at-least-once, imposta questo parametro su true . Per usare la semantica "exactly-once",
imposta il parametro su false . Questo parametro si applica solo quando
useStorageWriteApi è true . Il valore predefinito è false .
|
Esegui il modello
Console
- Vai alla pagina Crea job da modello di Dataflow. Vai a Crea job da modello
- Nel campo Nome job, inserisci un nome univoco per il job.
- (Facoltativo) Per Endpoint a livello di regione, seleziona un valore dal menu a discesa. La regione predefinita è
us-central1
.Per un elenco delle regioni in cui puoi eseguire un job Dataflow, vedi Località Dataflow.
- Nel menu a discesa Modello Dataflow, seleziona the JDBC to BigQuery template.
- Nei campi dei parametri forniti, inserisci i valori dei parametri.
- Fai clic su Esegui job.
gcloud
Nella shell o nel terminale, esegui il modello:
gcloud dataflow flex-template run JOB_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Jdbc_to_BigQuery_Flex \ --project=PROJECT_ID \ --region=REGION_NAME \ --parameters \ driverJars=DRIVER_JARS,\ driverClassName=DRIVER_CLASS_NAME,\ connectionURL=CONNECTION_URL,\ outputTable=OUTPUT_TABLE,\ bigQueryLoadingTemporaryDirectory=BIG_QUERY_LOADING_TEMPORARY_DIRECTORY,\
Sostituisci quanto segue:
JOB_NAME
: un nome job univoco a tua sceltaVERSION
: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latest
per utilizzare la versione più recente del modello, disponibile nella cartella padre senza data del bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, come
2023-09-12-00_RC00
, per utilizzare una versione specifica del modello, che si trova nidificata nella rispettiva cartella padre con data all'interno del bucket: gs://dataflow-templates-REGION_NAME/
REGION_NAME
: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1
DRIVER_JARS
: percorso o percorsi Cloud Storage dei driver JDBC separati da virgoleDRIVER_CLASS_NAME
: nome della classe del driver JDBCCONNECTION_URL
: la stringa dell'URL di connessione JDBC.OUTPUT_TABLE
: la tabella di output di BigQueryBIG_QUERY_LOADING_TEMPORARY_DIRECTORY
: la directory temporanea per il processo di caricamento di BigQuery
API
Per eseguire il modello utilizzando l'API REST, invia una richiesta POST HTTP. Per maggiori informazioni sull'API e sui relativi ambiti di autorizzazione, consulta projects.templates.launch
.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "launchParameter": { "jobName": "JOB_NAME", "parameters": { "driverJars": "DRIVER_JARS", "driverClassName": "DRIVER_CLASS_NAME", "connectionURL": "CONNECTION_URL", "outputTable": "OUTPUT_TABLE", "bigQueryLoadingTemporaryDirectory": "BIG_QUERY_LOADING_TEMPORARY_DIRECTORY", }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Jdbc_to_BigQuery_Flex", "environment": { "maxWorkers": "10" } } }
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto Google Cloud in cui vuoi eseguire il job DataflowJOB_NAME
: un nome job univoco a tua sceltaVERSION
: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latest
per utilizzare la versione più recente del modello, disponibile nella cartella padre senza data del bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, come
2023-09-12-00_RC00
, per utilizzare una versione specifica del modello, che si trova nidificata nella rispettiva cartella padre con data all'interno del bucket: gs://dataflow-templates-REGION_NAME/
LOCATION
: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1
DRIVER_JARS
: percorso o percorsi Cloud Storage dei driver JDBC separati da virgoleDRIVER_CLASS_NAME
: nome della classe del driver JDBCCONNECTION_URL
: la stringa dell'URL di connessione JDBC.OUTPUT_TABLE
: la tabella di output di BigQueryBIG_QUERY_LOADING_TEMPORARY_DIRECTORY
: la directory temporanea per il processo di caricamento di BigQuery
Passaggi successivi
- Scopri di più sui modelli Dataflow.
- Consulta l'elenco dei modelli forniti da Google.