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
Para o procedimento, consulte Codeless UI configuration e Script mode configuration.
Para todos os parâmetros do modo de script e scripts de exemplo, consulte Appendix: Sample scripts and parameters.
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: 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.
| 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 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.
| 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: 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 |