O modelo do BigQuery para o Clickhouse é um pipeline em lote que copia dados de uma tabela do BigQuery para uma tabela do Clickhouse. O modelo pode ler toda a tabela ou ler registros específicos usando uma consulta fornecida.
Requisitos de pipeline
- A tabela de origem do BigQuery precisa existir.
- A tabela do Clickhouse precisa existir.
Parâmetros do modelo
Parâmetros obrigatórios
- jdbcUrl: o URL JDBC de destino do ClickHouse no formato
jdbc:clickhouse://host:port/schema
. Qualquer opção do JDBC pode ser adicionada ao final do URL do JDBC. Por exemplo,jdbc:clickhouse://localhost:8123/default
. - clickHouseUsername: o nome de usuário do ClickHouse usado para autenticação.
- clickHouseTable: o nome da tabela de destino do ClickHouse em que os dados serão inseridos.
Parâmetros opcionais
- inputTableSpec: a tabela do BigQuery a ser lida. Se você especificar
inputTableSpec
, o modelo vai ler os dados diretamente do armazenamento do BigQuery usando a API BigQuery Storage Read (https://cloud.google.com/bigquery/docs/reference/storage). Para informações sobre limitações na API Storage Read, consulte https://cloud.google.com/bigquery/docs/reference/storage#limitations. É preciso especificarinputTableSpec
ouquery
. Se você definir os dois parâmetros, o modelo vai usar oquery
. Exemplo:<BIGQUERY_PROJECT>:<DATASET_NAME>.<INPUT_TABLE>
. - outputDeadletterTable: a tabela do BigQuery para mensagens que não alcançaram a tabela de saída. Se uma tabela não existir, ela será criada durante a execução do pipeline. Se não for especificado,
<outputTableSpec>_error_records
será usado. Por exemplo,<PROJECT_ID>:<DATASET_NAME>.<DEADLETTER_TABLE>
. - query: a consulta SQL a ser usada para ler dados do BigQuery. Se o conjunto de dados do BigQuery estiver em um projeto diferente do job do Dataflow, especifique o nome completo do conjunto de dados na consulta SQL. Por exemplo: <PROJECT_ID>.<DATASET_NAME>.<TABLE_NAME>. Por padrão, o parâmetro
query
usa o GoogleSQL (https://cloud.google.com/bigquery/docs/introduction-sql), a menos queuseLegacySql
sejatrue
. É preciso especificarinputTableSpec
ouquery
. Se você definir os dois parâmetros, o modelo vai usar oquery
. Por exemplo,select * from sampledb.sample_table
. - useLegacySql: defina como
true
para usar o SQL legado. Esse parâmetro só se aplica ao usar o parâmetroquery
. O padrão éfalse
. - queryLocation: necessário ao ler uma visualização autorizada sem a permissão da tabela subjacente. Por exemplo,
US
. - queryTempDataset: com essa opção, é possível definir um conjunto de dados existente para criar a tabela temporária que vai armazenar os resultados da consulta. Por exemplo,
temp_dataset
. - KMSEncryptionKey: se você estiver lendo do BigQuery usando a origem da consulta, use essa chave do Cloud KMS para criptografar todas as tabelas temporárias criadas. Por exemplo,
projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key
. - clickHousePassword: a senha do ClickHouse para autenticação.
- maxInsertBlockSize: o tamanho máximo do bloco para inserção, se controlarmos a criação de blocos para inserção (opção ClickHouseIO).
- insertDistributedSync: se a configuração estiver ativada, insira a consulta em espera distribuída até que os dados sejam enviados para todos os nós no cluster. (opção ClickHouseIO).
- insertQuorum: para consultas INSERT na tabela replicada, aguarde a gravação do número especificado de réplicas e linearize a adição dos dados. 0: desativado. Essa configuração está desativada nas configurações padrão do servidor (opção ClickHouseIO).
- insertDeduplicate: para consultas INSERT na tabela replicada, especifica que a remoção de duplicação de blocos de inserção deve ser realizada.
- maxRetries: número máximo de novas tentativas por inserção.
Executar o modelo
Console
- Acesse a página Criar job usando um modelo do Dataflow. Acesse Criar job usando um modelo
- No campo Nome do job, insira um nome exclusivo.
- Opcional: em Endpoint regional, selecione um valor no menu suspenso. A região padrão é
us-central1
.Para ver uma lista de regiões em que é possível executar um job do Dataflow, consulte Locais do Dataflow.
- No menu suspenso Modelo do Dataflow, selecione the BigQuery to Clickhouse template.
- Nos campos de parâmetro fornecidos, insira os valores de parâmetro.
- Cliquem em Executar job.
gcloud
No shell ou no terminal, execute o modelo:
gcloud dataflow flex-template run JOB_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/BigQuery_to_Clickhouse \ --parameters \ jdbcUrl=JDBC_URL,\ clickHouseUsername=CLICKHOUSE_USERNAME,\ clickHouseTable=CLICKHOUSE_TABLE
Substitua:
PROJECT_ID
: o ID do projeto Google Cloud em que você quer executar o job do DataflowJOB_NAME
: um nome de job de sua escolhaREGION_NAME
: a região onde você quer implantar o job do Dataflow, por exemplo,us-central1
VERSION
: a versão do modelo que você quer usarUse estes valores:
latest
para usar a versão mais recente do modelo, disponível na pasta mãe não datada no bucket: 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 respectiva pasta mãe datada no bucket: gs://dataflow-templates-REGION_NAME/
JDBC_URL
: seu URL do JDBC.CLICKHOUSE_USERNAME
: seu nome de usuário do Clickhouse.CLICKHOUSE_TABLE
: sua tabela do Clickhouse.
API
Para executar o modelo usando a API REST, envie uma solicitação HTTP POST. Para mais informações sobre a
API e os respectivos escopos de autorização, consulte
projects.templates.launch
.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "launch_parameter": { "jobName": "JOB_NAME", "parameters": { "jdbcUrl": "JDBC_URL", "clickHouseUsername": "CLICKHOUSE_USERNAME", "clickHouseTable": "CLICKHOUSE_TABLE" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/BigQuery_to_Clickhouse", } }
Substitua:
PROJECT_ID
: o ID do projeto Google Cloud em que você quer executar o job do DataflowJOB_NAME
: um nome de job de sua escolhaLOCATION
: a região onde você quer implantar o job do Dataflow, por exemplo,us-central1
VERSION
: a versão do modelo que você quer usarUse estes valores:
latest
para usar a versão mais recente do modelo, disponível na pasta mãe não datada no bucket: 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 respectiva pasta mãe datada no bucket: gs://dataflow-templates-REGION_NAME/
JDBC_URL
: seu URL do JDBC.CLICKHOUSE_USERNAME
: seu nome de usuário do Clickhouse.CLICKHOUSE_TABLE
: sua tabela do Clickhouse.
A seguir
- Saiba mais sobre os modelos do Dataflow.
- Confira a lista de modelos fornecidos pelo Google.