Todos os produtos
Search
Central de documentação

DataWorks:Fonte de dados do ClickHouse

Última atualização: Oct 09, 2026

A fonte de dados do ClickHouse permite ler e gravar dados no ClickHouse por meio de um canal bidirecional. Este tópico descreve os recursos de sincronização de dados do ClickHouse compatíveis com o DataWorks.

Versões compatíveis

As seguintes versões do Alibaba Cloud ClickHouse são compatíveis com as versões do driver JDBC listadas:

Versão do driver JDBC

Versão do kernel do Alibaba Cloud ClickHouse

0.2.4

20.8, 21.8

0.4.0, 0.4.2

22.8, 23.8, 25.3

Limites

A fonte de dados do ClickHouse oferece suporte apenas a leituras e gravações em lote. Detalhes:

  • Utilize um Serverless resource group.

  • O ClickHouse permite conexão via JDBC, mas a leitura de dados ocorre apenas por meio do JDBC Statement.

  • Selecione e reordene colunas específicas ao defini-las.

  • Para limitar a carga do ClickHouse quando o ClickHouse Writer utiliza o modo INSERT, recomendamos restringir o throughput do sistema a no máximo 1.000 transações por segundo (TPS).

  • A sincronização em lote de tabela única com o ClickHouse oferece suporte apenas ao Alibaba Cloud ClickHouse.

Tipos de campo compatíveis

Os seguintes tipos de dados comuns do Alibaba Cloud ClickHouse são compatíveis. Para a lista completa de tipos do Alibaba Cloud ClickHouse, consulte Data types. Outros tipos no conjunto de tipos de dados do ClickHouse de código aberto não são compatíveis. Para a lista completa de código aberto, consulte Documentação do ClickHouse.

Tipo de dados

ClickHouse Reader

ClickHouse Writer

Int8

Compatível

Compatível

Int16

Compatível

Compatível

Int32

Compatível

Compatível

Int64

Compatível

Compatível

UInt8

Compatível

Compatível

UInt16

Compatível

Compatível

UInt32

Compatível

Compatível

UInt64

Compatível

Compatível

Float32

Compatível

Compatível

Float64

Compatível

Compatível

Decimal

Compatível

Compatível

String

Compatível

Compatível

FixedString

Compatível

Compatível

Date

Compatível

Compatível

DateTime

Compatível

Compatível

DateTime64

Compatível

Compatível

Boolean

Compatível

Nota

O ClickHouse não possui um tipo Boolean separado. Use UInt8 ou Int8.

Compatível

Array

Parcialmente compatível.

Compatível quando os elementos da matriz são números inteiros, números de ponto flutuante, strings ou valores DateTime64 com precisão de milissegundos.

Compatível

Tuple

Compatível

Compatível

Domain(IPv4,IPv6)

Compatível

Compatível

Enum8

Compatível

Compatível

Enum16

Compatível

Compatível

Nullable

Compatível

Compatível

Nested

Parcialmente compatível.

Valores aninhados são compatíveis quando seus tipos de dados aninhados são números inteiros, números de ponto flutuante, strings ou valores DateTime64 com precisão de milissegundos.

Compatível

Adicionar uma fonte de dados

Antes de desenvolver uma tarefa de sincronização no DataWorks, adicione a fonte de dados necessária ao DataWorks seguindo as instruções em Data source configuration. Visualize as descrições dos parâmetros no console do DataWorks para entender o significado dos parâmetros ao adicionar uma fonte de dados.

Desenvolver tarefas de sincronização de dados

Para obter informações sobre o ponto de entrada e o procedimento de configuração de uma tarefa de sincronização, consulte os seguintes guias de configuração.

Configure uma tarefa de sincronização em lote de tabela única

Configure uma tarefa de sincronização de leitura em lote de banco de dados completo

Para o procedimento, consulte Batch database synchronization configuration.

Apêndice: Scripts de exemplo e parâmetros

Configure uma tarefa de sincronização em lote usando o editor de código

Para configurar uma tarefa de sincronização em lote usando o editor de código, configure os parâmetros relacionados no script com base nos requisitos unificados de formato de script. Para mais informações, consulte Script mode configuration. As informações a seguir descrevem os parâmetros que você deve configurar para fontes de dados ao configurar uma tarefa de sincronização em lote usando o editor de código.

Script de exemplo do Reader

{ "type": "job", "version": "2.0", "steps": [ { "stepType": "clickhouse", //Plug-in name. "parameter": { "fetchSize":1024,//Number of records fetched in each batch by the plug-in and database server. "datasource": "example", "column": [ //Column names. "id", "name" ], "where": "", //Filter condition. "splitPk": "", //Split key. "table": "" //Table name. }, "name": "Reader", "category": "reader" }, { "stepType": "clickhouse", "parameter": { "postSql": [ "atualize @table defina db_modify_time = now() where db_id = 1" ], "datasource": "example", //Data source. "batchByteSize": "67108864", "column": [ "id", "name" ], "writeMode": "insert", "encoding": "UTF-8", "batchSize": 1024, "table": "ClickHouse_table", "preSql": [ "exclua from @table where db_id = -1" ] }, "name": "Writer", "category": "writer" } ], "setting": { "executeMode": null, "errorLimit": { "record": "0" //Maximum number of error records during synchronization. }, "speed": { "throttle":true,//When throttle is false, mbps is ignored and throughput is unlimited; when true, throughput is limited. "concurrent":1 //Job concurrency. "mbps":"12",//Rate limit. Here, 1 mbps = 1 MB/s. } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }

Parâmetros do script do Reader

Parâmetro

Descrição

Obrigatório

Valor padrão

datasource

O nome da fonte de dados. No modo de script, adicione uma fonte de dados. O valor deve corresponder ao nome da fonte de dados adicionada.

Sim

Nenhum

table

A tabela a ser sincronizada, descrita em JSON.

Nota

table Deve estar incluído na unidade de configuração connection.

Sim

Nenhum

fetchSize

O número de registros recuperados em cada lote pelo plug-in e pelo servidor de banco de dados. Isso controla o número de interações de rede entre o Data Integration e o servidor, podendo melhorar o desempenho de extração de dados.

Nota

Um fetchSize excessivamente grande pode causar um erro de falta de memória (OOM) no processo de sincronização. Aumente-o gradualmente com base na carga do ClickHouse.

Não

1024

column

Campos do ClickHouse a serem lidos, separados por vírgulas. Exemplo: "column": ["id", "name", "age"].

Nota

column A configuração da coluna é obrigatória e não pode estar vazia.

Sim

Nenhum

jdbcUrl

Informações de conexão JDBC para o banco de dados de origem. A configuração jdbcUrl pertence à unidade de configuração connection.

  • Apenas um valor pode ser especificado por banco de dados.

  • O formato jdbcUrl segue o formato oficial do ClickHouse e pode incluir parâmetros de conexão adicionais. Exemplo:jdbc:clickhouse://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=gbk &autoReconnect=true&failOverReadOnly=false.

Sim

Nenhum

username

Nome de usuário da fonte de dados.

Sim

Nenhum

password

Senha do usuário da fonte de dados especificado.

Sim

Nenhum

splitPk

Ao extrair dados do ClickHouse, especificar splitPk significa que você deseja dividir os dados pelo campo representado por splitPk. A sincronização então inicia tarefas simultâneas para melhorar a eficiência.

Nota

Quando splitPk é configurado, fetchSize é obrigatório.

Não

Nenhum

where

Uma condição de filtro. Na prática, sincronize os dados do dia atual. Defina a condição where como gmt_create>$bizdate.

where Esta condição permite a sincronização incremental. Se a instrução where estiver ausente, seja porque a chave ou o valor where está faltando, todos os dados serão sincronizados.

Não

Nenhum

Script de exemplo do Writer

{ "type":"job", "version":"2.0",//Version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"clickhouse",//Plug-in name. "parameter":{ "username": "", "password": "", "column": [//Fields. "id", "name" ], "connection": [ { "table": [//Table name. "ClickHouse_table" ], "jdbcUrl": "jdbc:clickhouse://ip:port/database" } ], "preSql": [ //SQL statements to execute before the synchronization task. "TRUNCATETABLEIFEXISTStablename" ], "postSql": [//SQL statements to execute after the synchronization task. "ALTERTABLEtablenameATUALIZEcol1=1WHEREcol2=2" ], "batchSize": "1024", "batchByteSize": "67108864", "writeMode": "insert" }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"//Number of error records. }, "speed":{ "throttle":true,//When throttle is false, mbps is ignored and throughput is unlimited; when true, throughput is limited. "concurrent":1, //Job concurrency. "mbps":"12"//Rate limit. Here, 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Parâmetros do script do Writer

Parâmetro

Descrição

Obrigatório

Valor padrão

jdbcUrl

Informações de conexão JDBC para o banco de dados de destino. jdbcUrl pertence à unidade de configuração connection.

  • Apenas um valor pode ser especificado por banco de dados.

  • jdbcUrl segue o formato oficial do ClickHouse e pode incluir parâmetros de conexão adicionais. Exemplo:jdbc:clickhouse://127.0.0.1:3306/database.

Sim

Nenhum

username

Nome de usuário da fonte de dados.

Sim

Nenhum

password

Senha do usuário da fonte de dados especificado.

Sim

Nenhum

table

Nome da tabela a ser gravada, descrito como uma matriz JSON.

Nota

table Deve estar incluído na unidade de configuração connection.

Sim

Nenhum

column

Campos da tabela de destino a serem gravados, separados por vírgulas. Exemplo: "column": ["id", "name", "age"].

Nota

column A configuração da coluna é obrigatória e não pode estar vazia.

Sim

Nenhum

preSql

Instruções SQL padrão a serem executadas antes de gravar dados na tabela de destino.

Não

Nenhum

postSql

Instruções SQL padrão a serem executadas após gravar dados na tabela de destino.

Não

Nenhum

batchSize

Número de registros enviados em um único lote. Isso reduz bastante as interações de rede entre o sistema de sincronização e o ClickHouse, melhorando o throughput. Um valor excessivamente grande pode causar um erro de falta de memória (OOM) no processo de sincronização.

Não

1024