O modelo Pub/Sub para Java Database Connectivity (JDBC) é um pipeline de streaming que carrega dados de uma subscrição do Pub/Sub pré-existente como strings JSON e escreve os registos resultantes no JDBC.
Requisitos do pipeline
- A subscrição do Pub/Sub tem de existir antes de executar o pipeline.
- A origem JDBC tem de existir antes de executar o pipeline.
- O tópico de mensagens não entregues de saída do Pub/Sub tem de existir antes da execução do pipeline.
Parâmetros de modelos
| Parâmetro | Descrição |
|---|---|
driverClassName |
O nome da classe do controlador JDBC. Por exemplo, com.mysql.jdbc.Driver. |
connectionUrl |
A string do URL de ligação JDBC. Por exemplo, jdbc:mysql://some-host:3306/sampledb.
Pode transmitir este valor como uma string encriptada com uma chave do Cloud KMS e, em seguida, codificada em Base64.
Remova os carateres de espaço da string codificada em Base64. |
driverJars |
Caminhos do Cloud Storage separados por vírgulas para controladores JDBC. Por exemplo, gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar. |
username |
Opcional: o nome de utilizador a usar para a ligação JDBC. Pode transmitir este valor encriptado por uma chave do Cloud KMS como uma string codificada em Base64. |
password |
Opcional: a palavra-passe a usar para a ligação JDBC. Pode transmitir este valor encriptado por uma chave do Cloud KMS como uma string codificada em Base64. |
connectionProperties |
Opcional: string de propriedades a usar para a ligação JDBC. O formato da string tem de ser [propertyName=property;]*. Por exemplo, unicode=true;characterEncoding=UTF-8. |
statement |
Declaração a executar na base de dados. A declaração tem de especificar os nomes das colunas da tabela por qualquer ordem. Apenas os valores dos nomes das colunas especificados são lidos a partir do JSON e adicionados à declaração. Por exemplo, INSERT INTO tableName (column1, column2) VALUES (?,?) |
inputSubscription |
A subscrição de entrada do Pub/Sub a partir da qual ler, no formato projects/<project>/subscriptions/<subscription>. |
outputDeadletterTopic |
O tópico Pub/Sub para encaminhar mensagens não entregues. Por exemplo, projects/<project-id>/topics/<topic-name>. |
KMSEncryptionKey |
Opcional: chave de encriptação do Cloud KMS para desencriptar o nome de utilizador, a palavra-passe e a cadeia de caracteres da ligação. Se for transmitida uma chave do Cloud KMS, o nome de utilizador, a palavra-passe e a string de ligação têm de ser transmitidos encriptados. |
extraFilesToStage |
Caminhos do Cloud Storage ou Secrets do Secret Manager separados por vírgulas para ficheiros a preparar no trabalhador. Estes ficheiros são guardados no diretório /extra_files em cada trabalhador. Por exemplo, gs://<my-bucket>/file.txt,projects/<project-id>/secrets/<secret-id>/versions/<version-id>. |
Execute o modelo
Consola
- Aceda à página Dataflow Criar tarefa a partir de um modelo. Aceda a Criar tarefa a partir de modelo
- No campo Nome da tarefa, introduza um nome exclusivo para a tarefa.
- Opcional: para Ponto final regional, selecione um valor no menu pendente. A região
predefinida é
us-central1.Para ver uma lista das regiões onde pode executar uma tarefa do Dataflow, consulte o artigo Localizações do Dataflow.
- No menu pendente Modelo do fluxo de dados, selecione the Pub/Sub to JDBC template.
- Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
- Clique em Executar tarefa.
gcloud
Na shell ou no terminal, execute o modelo:
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
Substitua o seguinte:
JOB_NAME: um nome de tarefa exclusivo à sua escolhaVERSION: a versão do modelo que quer usarPode usar os seguintes valores:
latestpara usar a versão mais recente do modelo, que está disponível na pasta principal sem data no contentor: gs://dataflow-templates-REGION_NAME/latest/- o nome da versão, como
2023-09-12-00_RC00, para usar uma versão específica do modelo, que pode ser encontrada aninhada na pasta principal com a data correspondente no contentor: gs://dataflow-templates-REGION_NAME/
REGION_NAME: a região onde quer implementar a tarefa do Dataflow, por exemplo,us-central1DRIVER_CLASS_NAME: o nome da classe do controladorJDBC_CONNECTION_URL: o URL de ligação JDBCDRIVER_PATHS: os caminhos do Cloud Storage separados por vírgulas dos controladores JDBCCONNECTION_USERNAME: o nome de utilizador da ligação JDBCCONNECTION_PASSWORD: a palavra-passe da ligação JDBCCONNECTION_PROPERTIES: as propriedades da ligação JDBC, se necessárioSQL_STATEMENT: a declaração SQL a ser executada na base de dadosINPUT_SUBSCRIPTION: a subscrição de entrada do Pub/Sub a partir da qual lerOUTPUT_DEADLETTER_TOPIC: o Pub/Sub para encaminhar mensagens não entreguesKMS_ENCRYPTION_KEY: a chave de encriptação do Cloud KMS
API
Para executar o modelo através da API REST, envie um pedido HTTP POST. Para mais informações sobre a API e os respetivos âmbitos de autorização, consulte 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" }, }
Substitua o seguinte:
PROJECT_ID: o ID do projeto onde quer executar a tarefa do Dataflow Google CloudJOB_NAME: um nome de tarefa exclusivo à sua escolhaVERSION: a versão do modelo que quer usarPode usar os seguintes valores:
latestpara usar a versão mais recente do modelo, que está disponível na pasta principal sem data no contentor: gs://dataflow-templates-REGION_NAME/latest/- o nome da versão, como
2023-09-12-00_RC00, para usar uma versão específica do modelo, que pode ser encontrada aninhada na pasta principal com a data correspondente no contentor: gs://dataflow-templates-REGION_NAME/
LOCATION: a região onde quer implementar a tarefa do Dataflow, por exemplo,us-central1DRIVER_CLASS_NAME: o nome da classe do controladorJDBC_CONNECTION_URL: o URL de ligação JDBCDRIVER_PATHS: os caminhos do Cloud Storage separados por vírgulas dos controladores JDBCCONNECTION_USERNAME: o nome de utilizador da ligação JDBCCONNECTION_PASSWORD: a palavra-passe da ligação JDBCCONNECTION_PROPERTIES: as propriedades da ligação JDBC, se necessárioSQL_STATEMENT: a declaração SQL a ser executada na base de dadosINPUT_SUBSCRIPTION: a subscrição de entrada do Pub/Sub a partir da qual lerOUTPUT_DEADLETTER_TOPIC: o Pub/Sub para encaminhar mensagens não entreguesKMS_ENCRYPTION_KEY: a chave de encriptação do Cloud KMS
O que se segue?
- Saiba mais sobre os modelos do Dataflow.
- Consulte a lista de modelos fornecidos pela Google.