Todos los productos
Search
Centro de documentos

DataWorks:Origen de datos de ClickHouse

Última actualización: Oct 09, 2026

El origen de datos de ClickHouse le permite leer y escribir datos en ClickHouse mediante un canal bidireccional. En este tema se describen las capacidades de sincronización de datos de ClickHouse que admite DataWorks.

Versiones compatibles

A continuación se muestran las versiones de ClickHouse de Alibaba Cloud compatibles con las versiones del controlador JDBC indicadas:

Versión del controlador JDBC

Versión del kernel de ClickHouse de Alibaba Cloud

0.2.4

20.8, 21.8

0.4.0, 0.4.2

22.8, 23.8, 25.3

Límites

El origen de datos de ClickHouse solo admite lecturas y escrituras por lotes. Detalles:

  • Use un Serverless resource group.

  • La conexión a ClickHouse se establece mediante JDBC, pero la lectura de datos solo funciona a través de JDBC Statement.

  • Seleccione columnas específicas y reordénelas al especificarlas.

  • Para limitar la carga de ClickHouse cuando ClickHouse Writer usa el modo INSERT, se recomienda restringir el throughput del sistema a un máximo de 1,000 transacciones por segundo (TPS).

  • La sincronización por lotes de tabla única con ClickHouse solo es compatible con ClickHouse de Alibaba Cloud.

Tipos de campo compatibles

Se admiten los siguientes tipos de datos comunes de ClickHouse de Alibaba Cloud. Para consultar la lista completa de tipos de ClickHouse de Alibaba Cloud, consulte Data types. Los demás tipos del conjunto de datos de ClickHouse de código abierto no son compatibles. Para ver la lista completa de código abierto, consulte la documentación de ClickHouse.

Tipo de dato

ClickHouse Reader

ClickHouse Writer

Int8

Compatible

Compatible

Int16

Compatible

Compatible

Int32

Compatible

Compatible

Int64

Compatible

Compatible

UInt8

Compatible

Compatible

UInt16

Compatible

Compatible

UInt32

Compatible

Compatible

UInt64

Compatible

Compatible

Float32

Compatible

Compatible

Float64

Compatible

Compatible

Decimal

Compatible

Compatible

String

Compatible

Compatible

FixedString

Compatible

Compatible

Date

Compatible

Compatible

DateTime

Compatible

Compatible

DateTime64

Compatible

Compatible

Boolean

Compatible

Nota

ClickHouse no cuenta con un tipo Boolean independiente. Use UInt8 o Int8.

Compatible

Array

Parcialmente compatible.

Es compatible cuando los elementos del arreglo son enteros, números de punto flotante, cadenas o valores DateTime64 con precisión de milisegundos.

Compatible

Tuple

Compatible

Compatible

Domain(IPv4,IPv6)

Compatible

Compatible

Enum8

Compatible

Compatible

Enum16

Compatible

Compatible

Nullable

Compatible

Compatible

Nested

Parcialmente compatible.

Los valores anidados son compatibles cuando sus tipos de datos internos son enteros, números de punto flotante, cadenas o valores DateTime64 con precisión de milisegundos.

Compatible

Agregar un origen de datos

Antes de desarrollar una tarea de sincronización en DataWorks, agregue el origen de datos necesario siguiendo las instrucciones de Data source configuration. Consulte las descripciones de parámetros en la consola de DataWorks para comprender el significado de cada parámetro al agregar un origen de datos.

Desarrollar tareas de sincronización de datos

Para conocer el punto de entrada y el procedimiento de configuración de una tarea de sincronización, consulte las siguientes guías de configuración.

Configurar una tarea de sincronización por lotes de tabla única

Configurar una tarea de sincronización de lectura por lotes de base de datos completa

Para conocer el procedimiento, consulte Batch database synchronization configuration.

Apéndice: scripts y parámetros de ejemplo

Configurar una tarea de sincronización por lotes con el editor de código

Si desea configurar una tarea de sincronización por lotes con el editor de código, defina los parámetros correspondientes en el script según los requisitos unificados de formato. Para obtener más información, consulte Script mode configuration. A continuación se describen los parámetros que debe configurar para los orígenes de datos al utilizar el editor de código.

Script de ejemplo de 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": [ "update @table set 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": [ "delete 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 del script de Reader

Parámetro

Descripción

Obligatorio

Valor predeterminado

datasource

Nombre del origen de datos. En el modo script, puede agregar un origen de datos. El valor debe coincidir con el nombre del origen de datos agregado.

Sí

Ninguna

table

Tabla que se va a sincronizar, descrita en formato JSON.

Nota

tableDebe incluirse en la unidad de configuración connection.

Sí

Ninguna

fetchSize

Número de registros recuperados en cada lote por el complemento y el servidor de base de datos. Este valor controla la cantidad de interacciones de red entre Data Integration y el servidor, lo que mejora el rendimiento de extracción de datos.

Nota

Un valor fetchSize demasiado grande puede provocar un error de memoria insuficiente (OOM) durante la sincronización. Auméntelo de forma gradual según la carga de ClickHouse.

No

1,024

column

Campos de ClickHouse que se van a leer, separados por comas. Ejemplo: "column": ["id", "name", "age"].

Nota

columnLa configuración de columnas es obligatoria y no puede dejarse vacía.

Sí

Ninguna

jdbcUrl

Información de conexión JDBC de la base de datos de origen. La configuración jdbcUrl pertenece a la unidad de configuración connection.

  • Solo se puede especificar un valor por base de datos.

  • El formato de jdbcUrl sigue el formato oficial de ClickHouse y puede incluir parámetros de conexión adicionales. Ejemplo:jdbc:clickhouse://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=gbk &autoReconnect=true&failOverReadOnly=false.

Sí

Ninguna

username

Nombre de usuario del origen de datos.

Sí

Ninguna

password

Contraseña del usuario especificado del origen de datos.

Sí

Ninguna

splitPk

Al extraer datos de ClickHouse, especificar splitPk indica que desea dividir los datos por el campo representado por splitPk. La sincronización inicia entonces tareas simultáneas para mejorar la eficiencia.

Nota

Cuando se configura splitPk, fetchSize es obligatorio.

No

Ninguna

where

Condición de filtro. En la práctica, es posible que necesite sincronizar los datos del día actual. Establezca la condición where como gmt_create>$bizdate.

whereEsta condición habilita la sincronización incremental. Si falta la instrucción where, ya sea porque no se incluyó la clave where o su valor, se sincronizan todos los datos.

No

Ninguna

Script de ejemplo de 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 run before the synchronization task. "TRUNCATETABLEIFEXISTStablename" ], "postSql": [//SQL statements to run after the synchronization task. "ALTERTABLEtablenameUPDATEcol1=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 del script de Writer

Parámetro

Descripción

Obligatorio

Valor predeterminado

jdbcUrl

Información de conexión JDBC de la base de datos de destino. jdbcUrl pertenece a la unidad de configuración connection.

  • Solo se puede especificar un valor por base de datos.

  • jdbcUrl sigue el formato oficial de ClickHouse y puede incluir parámetros de conexión adicionales. Ejemplo:jdbc:clickhouse://127.0.0.1:3306/database.

Sí

Ninguna

username

Nombre de usuario del origen de datos.

Sí

Ninguna

password

Contraseña del usuario especificado del origen de datos.

Sí

Ninguna

table

Nombre de la tabla en la que se escribirá, descrito como un arreglo JSON.

Nota

tableDebe incluirse en la unidad de configuración connection.

Sí

Ninguna

column

Campos de la tabla de destino en los que se escribirá, separados por comas. Ejemplo: "column": ["id", "name", "age"].

Nota

columnLa configuración de columnas es obligatoria y no puede dejarse vacía.

Sí

Ninguna

preSql

Instrucciones SQL estándar que se ejecutarán antes de escribir datos en la tabla de destino.

No

Ninguna

postSql

Instrucciones SQL estándar que se ejecutarán después de escribir datos en la tabla de destino.

No

Ninguna

batchSize

Número de registros enviados en un solo lote. Reduce significativamente las interacciones de red entre el sistema de sincronización y ClickHouse, además de mejorar el throughput. Un valor demasiado grande puede provocar un error de memoria insuficiente (OOM) durante la sincronización.

No

1,024