O modelo do BigQuery para o Clickhouse é um pipeline em lote que copia dados de uma tabela do BigQuery para uma tabela do Clickhouse existente. O modelo pode ler toda a tabela ou ler registos específicos através de uma consulta fornecida.
Requisitos do pipeline
- A tabela de origem do BigQuery tem de existir.
- A tabela do Clickhouse tem de existir.
Parâmetros de modelos
Parâmetros obrigatórios
- jdbcUrl: o URL JDBC do ClickHouse de destino no formato
jdbc:clickhouse://host:port/schema. Pode adicionar qualquer opção JDBC no final do URL JDBC. Por exemplo,jdbc:clickhouse://localhost:8123/default. - clickHouseUsername: o nome de utilizador do ClickHouse para autenticação.
- clickHouseTable: o nome da tabela ClickHouse de destino para inserir os dados.
Parâmetros opcionais
- inputTableSpec: a tabela do BigQuery a partir da qual ler. Se especificar
inputTableSpec, o modelo lê os dados diretamente do armazenamento do BigQuery através da API BigQuery Storage Read (https://cloud.google.com/bigquery/docs/reference/storage). Para obter informações sobre as limitações na API Storage Read, consulte https://cloud.google.com/bigquery/docs/reference/storage#limitations. Tem de especificarinputTableSpecouquery. Se definir ambos os parâmetros, o modelo usa o parâmetroquery. Por exemplo,<BIGQUERY_PROJECT>:<DATASET_NAME>.<INPUT_TABLE>. - outputDeadletterTable: a tabela do BigQuery para mensagens que não conseguiram alcançar a tabela de saída. Se uma tabela não existir, é criada durante a execução do pipeline. Se não for especificado, é usado
<outputTableSpec>_error_records. Por exemplo,<PROJECT_ID>:<DATASET_NAME>.<DEADLETTER_TABLE>. - query: a consulta SQL a usar para ler dados do BigQuery. Se o conjunto de dados do BigQuery estiver num projeto diferente do trabalho do Dataflow, especifique o nome completo do conjunto de dados na consulta SQL, por exemplo: <PROJECT_ID>.<DATASET_NAME>.<TABLE_NAME>. Por predefinição, o parâmetro
queryusa o GoogleSQL (https://cloud.google.com/bigquery/docs/introduction-sql), a menos queuseLegacySqlsejatrue. Tem de especificarinputTableSpecouquery. Se definir ambos os parâmetros, o modelo usa o parâmetroquery. Por exemplo,select * from sampledb.sample_table. - useLegacySql: definido como
truepara usar o SQL antigo. Este parâmetro só se aplica quando usa o parâmetroquery. A predefinição éfalse. - queryLocation: necessário quando lê a partir de uma vista autorizada sem a autorização da tabela subjacente. Por exemplo,
US. - queryTempDataset: com esta opção, pode definir um conjunto de dados existente para criar a tabela temporária para armazenar os resultados da consulta. Por exemplo,
temp_dataset. - KMSEncryptionKey: se estiver a ler a partir do BigQuery através da origem de consulta, use esta chave do Cloud KMS para encriptar todas as tabelas temporárias criadas. Por exemplo,
projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key. - clickHousePassword: a palavra-passe 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 definição estiver ativada, insere a consulta em esperas distribuídas 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 escrita para o número especificado de réplicas e linearize a adição dos dados. 0: desativado. Esta definição está desativada nas definições do servidor predefinidas (opção ClickHouseIO).
- insertDeduplicate: para consultas INSERT na tabela replicada, especifica que deve ser feita a desduplicação de blocos de inserção.
- maxRetries: número máximo de novas tentativas por inserção.
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 BigQuery to Clickhouse 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 \ --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 o seguinte:
PROJECT_ID: o ID do projeto onde quer executar a tarefa do Dataflow Google CloudJOB_NAME: um nome de tarefa exclusivo à sua escolhaREGION_NAME: a região onde quer implementar a tarefa do Dataflow, por exemplo,us-central1VERSION: 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/
JDBC_URL: o seu URL JDBC.CLICKHOUSE_USERNAME: o seu nome de utilizador do Clickhouse.CLICKHOUSE_TABLE: a sua tabela do Clickhouse.
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 { "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 o seguinte:
PROJECT_ID: o ID do projeto onde quer executar a tarefa do Dataflow Google CloudJOB_NAME: um nome de tarefa exclusivo à sua escolhaLOCATION: a região onde quer implementar a tarefa do Dataflow, por exemplo,us-central1VERSION: 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/
JDBC_URL: o seu URL JDBC.CLICKHOUSE_USERNAME: o seu nome de utilizador do Clickhouse.CLICKHOUSE_TABLE: a sua tabela do Clickhouse.
O que se segue?
- Saiba mais sobre os modelos do Dataflow.
- Consulte a lista de modelos fornecidos pela Google.