Il modello da JDBC a BigQuery è una pipeline batch che copia i dati da una tabella di database relazionale in una tabella BigQuery esistente. Questa pipeline utilizza JDBC per connettersi al database relazionale. Utilizza questo modello per copiare in BigQuery i dati da qualsiasi database relazionale con i driver JDBC disponibili.
Per un ulteriore livello di protezione, puoi trasmettere una chiave Cloud KMS, insieme a un nome utente, una password e parametri della stringa di connessione con codifica Base64, criptati con la chiave Cloud KMS. Per ulteriori dettagli sulla crittografia di nome utente, password e parametri della stringa di connessione, consulta la pagina relativa all'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
Parametri obbligatori
- driverJars: l'elenco separato da virgole dei file JAR dei 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 dalla stringa codificata Base64. Nota la differenza tra una stringa di connessione a un 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 di output BigQuery. Ad esempio,
<PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>
. - bigQueryLoadingTemporaneo: la directory temporanea per il processo di caricamento di BigQuery. Ad esempio,
gs://your-bucket/your-files/temp_dir
.
Parametri facoltativi
- connectionProperties: la stringa delle proprietà da utilizzare per la connessione JDBC. Il formato della stringa deve essere
[propertyName=property;]*
.Per ulteriori informazioni, consulta Proprietà di configurazione (https://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html) nella documentazione MySQL. Ad esempio:unicode=true;characterEncoding=UTF-8
. - nomeutente: il nome utente da utilizzare per la connessione JDBC. Può essere passato come stringa criptata con una chiave Cloud KMS o come secret di Secret Manager nel formato projects/{project}/secrets/{secret}/versions/{secret_version}.
- password: la password da utilizzare per la connessione JDBC. Può essere passato come stringa criptata con una chiave Cloud KMS o come secret di Secret Manager nel formato projects/{project}/secrets/{secret}/versions/{secret_version}.
- query: la query da eseguire sull'origine per estrarre i dati. Tieni presente che alcuni tipi SQL JDBC e BigQuery, anche se condividono lo stesso nome, hanno alcune differenze. Alcune mappature dei tipi SQL -> BigQuery importanti da tenere a mente sono
DATETIME --> TIMESTAMP
. Se gli schemi non corrispondono, potrebbe essere necessaria la trasmissione del tipo. Ad esempio:select * from sampledb.sample_table
. - KMSEncryptionKey: 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, devi anche criptare il nome utente, la password e la stringa di connessione. Ad esempio,
projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key
. - useColumnAlias: se 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: se impostato su
true
, la pipeline viene troncata prima di caricare i dati in BigQuery. Il valore predefinito èfalse
, che fa sì che la pipeline aggiunga dati. - partitionColumn: se
partitionColumn
è specificato insieme atable
, JdbcIO legge la tabella in parallelo eseguendo più istanze della query nella stessa tabella (sottoquery) utilizzando gli intervalli. Attualmente, supportaLong
eDateTime
colonne di partizione. Trasmetti il tipo di colonna tramitepartitionColumnType
. - partitionColumnType: il tipo di
partitionColumn
, accettalong
odatetime
. Il valore predefinito è: lungo. - table: la tabella da cui leggere quando si utilizzano le partizioni. Questo parametro accetta anche una sottoquery tra parentesi. Ad esempio,
(select id, name from Person) as subq
. - numPartitions: il numero di partizioni. Con il limite inferiore e quello superiore, questo valore crea passi di partizione per le espressioni della clausola
WHERE
generate, utilizzate per suddividere in modo uniforme la colonna di partizione. Quando l'input è minore di1
, il numero viene impostato su1
. - lowerBound: il limite inferiore da utilizzare nello schema di partizione. Se non viene fornito, questo valore viene dedotto automaticamente da Apache Beam per i tipi supportati.
datetime
partitionColumnType accetta il limite inferiore nel formatoyyyy-MM-dd HH:mm:ss.SSSZ
. Ad esempio:2024-02-20 07:55:45.000+03:30
. - upperBound: il limite superiore da utilizzare nello schema di partizione. Se non viene fornito, questo valore viene dedotto automaticamente da Apache Beam per i tipi supportati.
datetime
partitionColumnType accetta il limite superiore nel formatoyyyy-MM-dd HH:mm:ss.SSSZ
. Ad esempio:2024-02-20 07:55:45.000+03:30
. - fetchSize: il numero di righe da recuperare contemporaneamente dal database. Non utilizzato per le letture partizionate. Il valore predefinito è 50.000.
- createDisposition: il valore CreateDisposition di BigQuery da utilizzare. Ad esempio,
CREATE_IF_NEEDED
oCREATE_NEVER
. Il valore predefinito è: CREATE_NEVER. - bigQuerySchemaPath: il percorso di Cloud Storage per lo schema JSON di BigQuery. Se
createDisposition
viene impostato suCREATE_IF_NEEDED
, è necessario specificare questo parametro. Ad esempio:gs://your-bucket/your-schema.json
. - outputDeadletterTable: la tabella BigQuery da utilizzare per i messaggi che non sono riusciti a raggiungere la tabella di output, formattata come
"PROJECT_ID:DATASET_NAME.TABLE_NAME"
. Se la tabella non esiste, viene creata quando viene eseguita la pipeline. Se questo parametro non viene specificato, la pipeline avrà esito negativo in caso di errori di scrittura.Questo parametro può essere specificato solo seuseStorageWriteApi
ouseStorageWriteApiAtLeastOnce
sono impostati su true. - disabledAlgorithms: gli algoritmi da disattivare separati da virgole. Se questo valore è impostato su
none
, nessun algoritmo è disattivato. Utilizza questo parametro con cautela, perché gli algoritmi disattivati per impostazione predefinita potrebbero presentare vulnerabilità o problemi di prestazioni. Ad esempio:SSLv3, RC4
. - extraFilesToStage: percorsi Cloud Storage separati da virgole o secret Secret Manager per i file da eseguire in staging nel worker. Questi file vengono salvati nella directory /extra_files in ogni worker. Ad esempio,
gs://<BUCKET_NAME>/file.txt,projects/<PROJECT_ID>/secrets/<SECRET_ID>/versions/<VERSION_ID>
. - useStorageWriteApi: se
true
, la pipeline utilizza l'API BigQuery Storage di scrittura (https://cloud.google.com/bigquery/docs/write-api). Il valore predefinito èfalse
. Per ulteriori informazioni, consulta Utilizzo dell'API Storage Write (https://beam.apache.org/documentation/io/built-in/google-bigquery/#storage-write-api). - useStorageWriteApiAtLeastOnce: quando utilizzi l'API Storage Write, specifica la semantica di scrittura. Per utilizzare la semantica almeno una volta (https://beam.apache.org/documentation/io/built-in/google-bigquery/#at-least-once-semantics), imposta questo parametro su
true
. Per utilizzare la semantica esattamente una volta, imposta il parametro sufalse
. Questo parametro si applica solo quandouseStorageWriteApi
è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, consulta Località di Dataflow.
- Nel menu a discesa Modello di flusso di dati, seleziona the JDBC to BigQuery with BigQuery Storage API support 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 di 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 principale senza data del bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, ad esempio
2023-09-12-00_RC00
, per utilizzare una versione specifica del modello, che si trova nidificata nella rispettiva cartella principale datata nel bucket: gs://dataflow-templates-REGION_NAME/
REGION_NAME
: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1
DRIVER_JARS
: il percorso o i percorsi Cloud Storage dei driver JDBC, separati da virgole,DRIVER_CLASS_NAME
: nome della classe del driver JDBCCONNECTION_URL
: la stringa dell'URL di connessione JDBC.OUTPUT_TABLE
: la tabella di output 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 ulteriori 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 di 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 principale senza data del bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, ad esempio
2023-09-12-00_RC00
, per utilizzare una versione specifica del modello, che si trova nidificata nella rispettiva cartella principale datata nel bucket: gs://dataflow-templates-REGION_NAME/
LOCATION
: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1
DRIVER_JARS
: il percorso o i percorsi Cloud Storage dei driver JDBC, separati da virgole,DRIVER_CLASS_NAME
: nome della classe del driver JDBCCONNECTION_URL
: la stringa dell'URL di connessione JDBC.OUTPUT_TABLE
: la tabella di output 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.