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
Para conocer el procedimiento, consulte Codeless UI configuration y Script mode configuration.
Para consultar todos los parámetros del modo script y los scripts de ejemplo, consulte Appendix: Sample scripts and parameters.
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: 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.
| 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 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.
| 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: 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 |