Tous les produits
Search
Centre de documentation

DataWorks:Source de données ClickHouse

Dernière mise à jour :Aug 10, 2026

La source de données ClickHouse offre des canaux de lecture et d'écriture bidirectionnels pour ClickHouse. Cette rubrique décrit les fonctionnalités de synchronisation des données ClickHouse prises en charge par DataWorks.

Versions prises en charge

Le tableau ci-dessous présente les versions prises en charge d'ApsaraDB for ClickHouse et les versions compatibles du pilote JDBC :

Version du pilote JDBC

Version du noyau ApsaraDB for ClickHouse

0.2.4

20.8, 21.8

0.4.0, 0.4.2

22.8, 23.8, 25.3

Limites

La source de données ClickHouse prend uniquement en charge la lecture et l'écriture par lot, comme détaillé ci-dessous.

  • Prend en charge les groupes de ressources serverless.

  • Prend en charge les connexions JDBC à ClickHouse et autorise uniquement la lecture des données via JDBC Statement.

  • Permet le filtrage et le réordonnancement des colonnes. Spécifiez les colonnes selon vos besoins.

  • Afin de préserver les performances de ClickHouse, nous vous recommandons de limiter le débit système (TPS) à 1 000 maximum lorsque ClickHouse Writer utilise le mode INSERT.

  • La synchronisation par lot de table unique ClickHouse prend uniquement en charge ApsaraDB for ClickHouse.

Types de colonnes pris en charge

Les types de données ApsaraDB for ClickHouse courants suivants sont pris en charge. Pour la liste complète des types de données ApsaraDB for ClickHouse, consultez la section Types de données. Les autres types issus de l'ensemble officiel des types de données ClickHouse open source ne sont pas pris en charge. Pour consulter la liste complète des types de données ClickHouse open source, reportez-vous à la documentation ClickHouse Doc.

Type de données

ClickHouse Reader

ClickHouse Writer

Int8

Pris en charge

Pris en charge

Int16

Pris en charge

Pris en charge

Int32

Pris en charge

Pris en charge

Int64

Pris en charge

Pris en charge

UInt8

Pris en charge

Pris en charge

UInt16

Pris en charge

Pris en charge

UInt32

Pris en charge

Pris en charge

UInt64

Pris en charge

Pris en charge

Float32

Pris en charge

Pris en charge

Float64

Pris en charge

Pris en charge

Decimal

Pris en charge

Pris en charge

String

Pris en charge

Pris en charge

FixedString

Pris en charge

Pris en charge

Date

Pris en charge

Pris en charge

DateTime

Pris en charge

Pris en charge

DateTime64

Pris en charge

Pris en charge

Boolean

Pris en charge

Remarque

ClickHouse ne dispose pas de type Boolean distinct. Vous pouvez utiliser UInt8 ou Int8 à la place.

Pris en charge

Array

Partiellement pris en charge.

Pris en charge lorsque le type d'élément du tableau est un entier, un nombre à virgule flottante, une chaîne ou DateTime64 avec une précision à la milliseconde.

Pris en charge

Tuple

Pris en charge

Pris en charge

Domain(IPv4,IPv6)

Pris en charge

Pris en charge

Enum8

Pris en charge

Pris en charge

Enum16

Pris en charge

Pris en charge

Nullable

Pris en charge

Pris en charge

Nested

Partiellement pris en charge.

Les types d'éléments Nested prennent en charge les entiers, les nombres à virgule flottante, les chaînes et DateTime64 avec une précision à la milliseconde.

Pris en charge

Ajouter une source de données

Avant de développer une tâche de synchronisation dans DataWorks, ajoutez la source de données requise à DataWorks en suivant les instructions fournies dans la section Configuration de la source de données. Consultez les descriptions des paramètres dans la console DataWorks pour comprendre la signification des paramètres lors de l'ajout d'une source de données.

Développer une tâche de synchronisation des données

Pour obtenir des informations sur le point d'entrée et la procédure de configuration d'une tâche de synchronisation, consultez les guides de configuration suivants.

Guide de configuration des tâches de synchronisation par lot de table unique

Guide de configuration de la synchronisation par lot en lecture complète de base de données

Pour la procédure, consultez la section Configuration de la synchronisation par lot de base de données.

Annexe : Exemple de script et descriptions des paramètres

Configurer une tâche de synchronisation par lot à l'aide de l'éditeur de code

Si vous souhaitez configurer une tâche de synchronisation par lot à l'aide de l'éditeur de code, configurez les paramètres associés dans le script conformément aux exigences de format de script unifié. Pour plus d'informations, consultez la section Configuration en mode script. Les informations suivantes décrivent les paramètres que vous devez configurer pour les sources de données lors de la configuration d'une tâche de synchronisation par lot à l'aide de l'éditeur de code.

Exemple de script Reader

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "clickhouse", //Plugin name.
            "parameter": {
                "fetchSize":1024,//This configuration item defines the number of records fetched in batch each time between the plugin and the 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 allowed during synchronization.
        },
        "speed": {
         "throttle":true,//When throttle is false, the mbps parameter does not take effect, indicating no rate limiting; when throttle is true, rate limiting is applied.
            "concurrent":1 //Job concurrency.
            "mbps":"12",//Rate limit, where 1mbps = 1MB/s.
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Paramètres du script Reader

Paramètre

Description

Obligatoire

Valeur par défaut

datasource

Le nom de la source de données. Le mode script permet d'ajouter des sources de données. La valeur de ce paramètre doit correspondre au nom de la source de données ajoutée.

Oui

Aucune

table

La table à synchroniser, décrite en JSON.

Remarque

table doit être inclus dans l'unité de configuration connection.

Oui

Aucune

fetchSize

Ce paramètre définit le nombre de lignes récupérées à chaque lot entre le plug-in et le serveur de base de données. Il détermine le nombre d'allers-retours réseau entre le système de synchronisation des données et le serveur, et peut améliorer les performances d'extraction des données.

Remarque

Une valeur fetchSize trop élevée peut provoquer une erreur OOM (Out Of Memory) lors du processus de synchronisation des données. Augmentez-la progressivement en fonction de la charge de ClickHouse.

Non

1 024

column

Les colonnes ClickHouse à lire, séparées par des virgules. Par exemple, "column": ["id", "name", "age"].

Remarque

Le paramètre column est obligatoire et ne peut pas être vide.

Oui

Aucune

jdbcUrl

La chaîne de connexion JDBC pour la base de données source. jdbcUrl est inclus dans l'unité de configuration connection.

  • Une seule valeur peut être configurée pour une base de données.

  • Le format de jdbcUrl suit le format officiel ClickHouse et peut inclure des paramètres supplémentaires. Par exemple : jdbc:clickhouse://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=gbk &autoReconnect=true&failOverReadOnly=false.

Oui

Aucune

username

Le nom d'utilisateur de la source de données.

Oui

Aucune

password

Le mot de passe correspondant au nom d'utilisateur spécifié pour la source de données.

Oui

Aucune

splitPk

Lorsque ClickHouse extrait des données, la spécification de splitPk indique que vous souhaitez utiliser le champ représenté par splitPk pour fragmenter les données. La synchronisation des données lance alors des tâches simultanées pour améliorer l'efficacité de la synchronisation.

Remarque

Lorsque splitPk est configuré, le paramètre fetchSize est obligatoire.

Non

Aucune

where

Condition de filtrage. Dans les scénarios métier réels, vous synchronisez souvent les données du jour en cours, la condition where étant spécifiée sous la forme gmt_create>$bizdate.

La condition where permet d'effectuer efficacement une synchronisation incrémentielle. Si vous ne fournissez pas d'instruction where, y compris en omettant la clé ou la valeur pour where, la synchronisation des données est traitée comme une synchronisation complète.

Non

Aucune

Exemple de script Writer

{
    "type":"job",
    "version":"2.0",//Version number.
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"clickhouse",//Plugin name.
            "parameter":{
                "username": "",
                "password": "",
                "column": [//Fields.
                    "id",
                    "name"
                ],
                "connection": [
                    {
                        "table": [//Table name.
                            "ClickHouse_table"
                        ],
                        "jdbcUrl": "jdbc:clickhouse://ip:port/database"
                    }
                ],
                "preSql": [ //SQL statements executed before the data synchronization task runs.
                    "TRUNCATETABLEIFEXISTStablename"
                ],
                "postSql": [//SQL statements executed after the data synchronization task runs.
                    "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, the mbps parameter does not take effect, indicating no rate limiting; when throttle is true, rate limiting is applied.
            "concurrent":1, //Job concurrency.
            "mbps":"12"//Rate limit, where 1mbps = 1MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Paramètres du script Writer

Paramètre

Description

Obligatoire

Valeur par défaut

jdbcUrl

La chaîne de connexion JDBC pour la base de données de destination. jdbcUrl est inclus dans l'unité de configuration connection.

  • Une seule valeur peut être configurée pour une base de données.

  • Le format de jdbcUrl suit le format officiel ClickHouse et peut inclure des paramètres supplémentaires. Par exemple, jdbc:clickhouse://127.0.0.1:3306/database.

Oui

Aucune

username

Le nom d'utilisateur de la source de données.

Oui

Aucune

password

Le mot de passe correspondant au nom d'utilisateur spécifié pour la source de données.

Oui

Aucune

table

Les noms des tables dans lesquelles écrire, décrits sous forme de tableau JSON.

Remarque

table doit être inclus dans l'unité de configuration connection.

Oui

Aucune

column

Les colonnes dans lesquelles écrire dans la table de destination, séparées par des virgules. Par exemple, "column": ["id", "name", "age"].

Remarque

Le paramètre column est obligatoire et ne peut pas être vide.

Oui

Aucune

preSql

L'instruction SQL standard exécutée avant l'écriture des données dans la table de destination.

Non

Aucune

postSql

L'instruction SQL standard exécutée après l'écriture des données dans la table de destination.

Non

Aucune

batchSize

Le nombre d'enregistrements validés à chaque lot. Cette valeur réduit considérablement le nombre d'allers-retours réseau entre le système de synchronisation des données et ClickHouse, et améliore le débit global. Une valeur trop élevée peut provoquer une erreur OOM lors du processus de synchronisation des données.

Non

1 024