Modello Pub/Sub a Java Database Connectivity (JDBC)

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 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 i caratteri di spaziatura dalla stringa con codifica in 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 passare questo valore criptato da una chiave Cloud KMS come stringa con codifica in 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 in Base64.
connectionProperties (Facoltativo) Stringa delle 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. Solo i valori dei nomi delle colonne specificati vengono letti dal JSON 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) La 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 formato criptato.
extraFilesToStage Percorsi Cloud Storage o secret di 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

  1. Vai alla pagina Crea job da modello di Dataflow.
  2. Vai a Crea job da modello
  3. Nel campo Nome job, inserisci un nome job univoco.
  4. (Facoltativo) Per Endpoint regionale, 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.

  5. Dal menu a discesa Modello Dataflow, seleziona il modello Da Pub/Sub a JDBC.
  6. Nei campi dei parametri forniti, inserisci i valori dei parametri.
  7. 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 job univoco a tua scelta
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi utilizzare i seguenti valori:

  • REGION_NAME: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempio us-central1
  • DRIVER_CLASS_NAME: il nome della classe del driver
  • JDBC_CONNECTION_URL: l'URL di connessione JDBC
  • DRIVER_PATHS: il percorso o i percorsi Cloud Storage separati da virgole del o dei driver JDBC
  • CONNECTION_USERNAME: il nome utente della connessione JDBC
  • CONNECTION_PASSWORD: la password della connessione JDBC
  • CONNECTION_PROPERTIES: le proprietà della connessione JDBC, se necessario
  • SQL_STATEMENT: l'istruzione SQL da eseguire sul database
  • INPUT_SUBSCRIPTION: la sottoscrizione Pub/Sub di input da cui leggere
  • OUTPUT_DEADLETTER_TOPIC: l'argomento Pub/Sub a cui inoltrare i messaggi non recapitabili
  • KMS_ENCRYPTION_KEY: la chiave di crittografia Cloud KMS

API

Per eseguire il modello utilizzando l'API REST, invia una richiesta HTTP POST. 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 in cui vuoi eseguire il job Dataflow Google Cloud
  • JOB_NAME: un nome job univoco a tua scelta
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi utilizzare i seguenti valori:

  • LOCATION: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempio us-central1
  • DRIVER_CLASS_NAME: il nome della classe del driver
  • JDBC_CONNECTION_URL: l'URL di connessione JDBC
  • DRIVER_PATHS: il percorso o i percorsi Cloud Storage separati da virgole del o dei driver JDBC
  • CONNECTION_USERNAME: il nome utente della connessione JDBC
  • CONNECTION_PASSWORD: la password della connessione JDBC
  • CONNECTION_PROPERTIES: le proprietà della connessione JDBC, se necessario
  • SQL_STATEMENT: l'istruzione SQL da eseguire sul database
  • INPUT_SUBSCRIPTION: la sottoscrizione Pub/Sub di input da cui leggere
  • OUTPUT_DEADLETTER_TOPIC: l'argomento Pub/Sub a cui inoltrare i messaggi non recapitabili
  • KMS_ENCRYPTION_KEY: la chiave di crittografia Cloud KMS

Passaggi successivi