Il modello Da Pub/Sub a Java Database Connectivity (JDBC) è una pipeline in modalità flusso che importa i dati da una sottoscrizione Pub/Sub preesistente come stringhe JSON e scrive i record risultanti in JDBC.
Requisiti della pipeline
- La sottoscrizione Pub/Sub deve esistere prima dell'esecuzione della pipeline.
- L'origine JDBC deve esistere prima dell'esecuzione della pipeline.
- L'argomento messaggi non recapitabili di output di Pub/Sub deve esistere prima dell'esecuzione della pipeline.
Parametri del modello
| Parametro | Descrizione |
|---|---|
driverClassName |
Il nome della classe del driver JDBC. Ad esempio, com.mysql.jdbc.Driver. |
connectionUrl |
Stringa dell'URL di connessione JDBC. Ad esempio, jdbc:mysql://some-host:3306/sampledb.
Puoi trasmettere questo valore come stringa criptata con una chiave Cloud KMS e poi codificata in Base64.
Rimuovi i caratteri di spaziatura dalla stringa con codifica Base64. |
driverJars |
Percorsi Cloud Storage separati da virgole per i driver JDBC. Ad esempio, gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar. |
username |
(Facoltativo) Il nome utente da utilizzare per la connessione JDBC. Puoi trasmettere questo valore criptato da una chiave Cloud KMS come stringa con codifica Base64. |
password |
(Facoltativo) La password da utilizzare per la connessione JDBC. Puoi trasmettere questo valore criptato da una chiave Cloud KMS come stringa con codifica Base64. |
connectionProperties |
(Facoltativo) Stringa di proprietà da utilizzare per la connessione JDBC. Il formato della stringa deve essere [propertyName=property;]*. Ad esempio, unicode=true;characterEncoding=UTF-8. |
statement |
Istruzione da eseguire sul database. L'istruzione deve specificare i nomi delle colonne della tabella in qualsiasi ordine. Dal JSON vengono letti solo i valori dei nomi delle colonne specificati e aggiunti all'istruzione. Ad esempio, INSERT INTO tableName (column1, column2) VALUES (?,?) |
inputSubscription |
La sottoscrizione Pub/Sub di input da cui leggere, nel formato projects/<project>/subscriptions/<subscription>. |
outputDeadletterTopic |
L'argomento Pub/Sub a cui inoltrare i messaggi non recapitabili. Ad esempio, projects/<project-id>/topics/<topic-name>. |
KMSEncryptionKey |
(Facoltativo) Chiave di crittografia Cloud KMS per decriptare il nome utente, la password e la stringa di connessione. Se viene passata la chiave Cloud KMS, il nome utente, la password e la stringa di connessione devono essere passati tutti in forma criptata. |
extraFilesToStage |
Percorsi Cloud Storage o secret Secret Manager separati da virgole per i file da preparare nel worker. Questi file verranno salvati nella directory /extra_files di ogni worker. Ad esempio, gs://<my-bucket>/file.txt,projects/<project-id>/secrets/<secret-id>/versions/<version-id>. |
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.
- Dal menu a discesa Modello Dataflow, seleziona the Pub/Sub to JDBC 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/Pubsub_to_Jdbc \ --region REGION_NAME \ --parameters \ driverClassName=DRIVER_CLASS_NAME,\ connectionUrl=JDBC_CONNECTION_URL,\ driverJars=DRIVER_PATHS,\ username=CONNECTION_USERNAME,\ password=CONNECTION_PASSWORD,\ connectionProperties=CONNECTION_PROPERTIES,\ statement=SQL_STATEMENT,\ inputSubscription=INPUT_SUBSCRIPTION,\ outputDeadletterTopic=OUTPUT_DEADLETTER_TOPIC,\ KMSEncryptionKey=KMS_ENCRYPTION_KEY
Sostituisci quanto segue:
JOB_NAME: un nome univoco del job a tua sceltaVERSION: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latestper utilizzare l'ultima versione del modello, disponibile nella cartella principale senza data nel 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 con data nel bucket: gs://dataflow-templates-REGION_NAME/
REGION_NAME: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1DRIVER_CLASS_NAME: il nome della classe del driverJDBC_CONNECTION_URL: l'URL di connessione JDBCDRIVER_PATHS: il percorso o i percorsi Cloud Storage separati da virgole dei driver JDBCCONNECTION_USERNAME: il nome utente della connessione JDBCCONNECTION_PASSWORD: la password di connessione JDBCCONNECTION_PROPERTIES: le proprietà di connessione JDBC, se necessarioSQL_STATEMENT: l'istruzione SQL da eseguire sul databaseINPUT_SUBSCRIPTION: la sottoscrizione Pub/Sub di input da cui leggereOUTPUT_DEADLETTER_TOPIC: Pub/Sub a cui inoltrare i messaggi non recapitabiliKMS_ENCRYPTION_KEY: la chiave di crittografia Cloud KMS
API
Per eseguire il modello utilizzando l'API REST, invia una richiesta POST HTTP. Per saperne di più 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 { "jobName": "JOB_NAME", "parameters": { "driverClassName": "DRIVER_CLASS_NAME", "connectionUrl": "JDBC_CONNECTION_URL", "driverJars": "DRIVER_PATHS", "username": "CONNECTION_USERNAME", "password": "CONNECTION_PASSWORD", "connectionProperties": "CONNECTION_PROPERTIES", "statement": "SQL_STATEMENT", "inputSubscription": "INPUT_SUBSCRIPTION", "outputDeadletterTopic": "OUTPUT_DEADLETTER_TOPIC", "KMSEncryptionKey":"KMS_ENCRYPTION_KEY" }, "environment": { "zone": "us-central1-f" }, }
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto Google Cloud in cui vuoi eseguire il job DataflowJOB_NAME: un nome univoco del job a tua sceltaVERSION: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latestper utilizzare l'ultima versione del modello, disponibile nella cartella principale senza data nel 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 con data nel bucket: gs://dataflow-templates-REGION_NAME/
LOCATION: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1DRIVER_CLASS_NAME: il nome della classe del driverJDBC_CONNECTION_URL: l'URL di connessione JDBCDRIVER_PATHS: il percorso o i percorsi Cloud Storage separati da virgole dei driver JDBCCONNECTION_USERNAME: il nome utente della connessione JDBCCONNECTION_PASSWORD: la password di connessione JDBCCONNECTION_PROPERTIES: le proprietà di connessione JDBC, se necessarioSQL_STATEMENT: l'istruzione SQL da eseguire sul databaseINPUT_SUBSCRIPTION: la sottoscrizione Pub/Sub di input da cui leggereOUTPUT_DEADLETTER_TOPIC: Pub/Sub a cui inoltrare i messaggi non recapitabiliKMS_ENCRYPTION_KEY: la chiave di crittografia Cloud KMS
Passaggi successivi
- Scopri di più sui modelli Dataflow.
- Consulta l'elenco dei modelli forniti da Google.