全部产品
Search
文档中心

DataWorks:Sumber data ClickHouse

更新时间:Jan 10, 2026

Sumber data ClickHouse menyediakan saluran dua arah untuk membaca dari dan menulis ke ClickHouse. Topik ini menjelaskan kemampuan sinkronisasi data yang didukung oleh DataWorks untuk ClickHouse.

Versi yang didukung

Tabel berikut menjelaskan kompatibilitas antara versi Alibaba Cloud ClickHouse dan versi driver JDBC.

Versi driver JDBC

Versi Alibaba Cloud ClickHouse

0.2.4

20.8, 21.8

0.4.0, 0.4.2

22.8, 23.8

Batasan

Sumber data ClickHouse hanya mendukung operasi baca dan tulis offline. Batasan berikut berlaku:

Tipe data yang didukung

Tipe data umum Alibaba Cloud ClickHouse didukung. Untuk daftar lengkap tipe data Alibaba Cloud ClickHouse, lihat Tipe data. Tipe data lain yang dijelaskan dalam dokumentasi open source ClickHouse tidak didukung. Untuk daftar lengkap tipe data open source ClickHouse, lihat ClickHouse Doc.

Tipe data

ClickHouse Reader

ClickHouse Writer

Int8

Support

Support

Int16

Support

Supported

Int32

Supported

Support

Int64

Support

Supported

UInt8

Support

Supported

UInt16

Supported

Support

UInt32

Support

Support

UInt64

Support

Support

Float32

Supported

Support

Float64

Support

Support

Decimal

Support

Support

String

Support

Support

FixedString

Support

Support

Date

Supported

Support

DateTime

Support

Support

DateTime64

Support

Support

Boolean

Support

Catatan

ClickHouse tidak memiliki tipe Boolean khusus. Gunakan UInt8 atau Int8 sebagai gantinya.

Support

Array

Partially supported.

Hanya didukung ketika elemen array berupa bilangan bulat, bilangan titik mengambang, string, atau DateTime64 dengan presisi milidetik.

Supported

Tuple

Supported

Supported

Domain(IPv4,IPv6)

Supported

Support

Enum8

Supported

Support

Enum16

Support

Support

Nullable

Support

Support

Nested

Partially supported.

Tipe data Nested mendukung bilangan bulat, bilangan titik mengambang, string, dan nilai DateTime64 dengan presisi milidetik.

Support

Tambahkan sumber data

Sebelum mengembangkan task sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk di Manajemen Sumber Data. Anda dapat melihat deskripsi parameter di Konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.

Pengembangan task sinkronisasi data

Untuk informasi tentang titik masuk dan prosedur konfigurasi task sinkronisasi, lihat panduan konfigurasi berikut.

Konfigurasikan task sinkronisasi offline satu tabel

Konfigurasikan sinkronisasi baca offline seluruh database

Untuk informasi lebih lanjut tentang prosedurnya, lihat Konfigurasikan task sinkronisasi database penuh secara real-time.

Lampiran: Demo skrip dan deskripsi parameter

Konfigurasikan task sinkronisasi batch menggunakan editor kode

Jika ingin mengonfigurasi task sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip sesuai dengan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Konfigurasikan task di editor kode. Informasi berikut menjelaskan parameter yang harus dikonfigurasi untuk sumber data saat mengonfigurasi task sinkronisasi batch menggunakan editor kode.

Demo skrip Reader

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "clickhouse", // Nama plug-in.
            "parameter": {
                "fetchSize":1024,// Jumlah catatan yang diambil per batch dari server database.
                "datasource": "example",
                "column": [   // Nama kolom.
                    "id",
                    "name"
                ],
                "where": "",    // Kondisi filter.
                "splitPk": "",  // Kunci shard.
                "table": ""    // Nama tabel.
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "clickhouse",
            "parameter": {
                "postSql": [
                    "update @table set db_modify_time = now() where db_id = 1"
                ],
                "datasource": "example",    // Sumber data.
                "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"  // Jumlah maksimum catatan error yang diizinkan selama sinkronisasi.
        },
        "speed": {
         "throttle":true,// Saat throttle bernilai false, mbps diabaikan (tanpa pembatasan kecepatan). Saat throttle bernilai true, pembatasan kecepatan diaktifkan.
            "concurrent":1 // Konkurensi pekerjaan.
            "mbps":"12",// Laju pembatasan kecepatan. 1 mbps = 1 MB/s.
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Parameter skrip Reader

Parameter

Deskripsi

Wajib

Nilai default

datasource

Nama sumber data. Dalam mode skrip, Anda dapat menambahkan sumber data. Nilainya harus persis sama dengan nama sumber data yang ditambahkan.

Ya

Tidak ada

table

Tabel yang akan disinkronkan, dijelaskan dalam format JSON.

Catatan

Parameter table harus disertakan dalam blok konfigurasi connection.

Ya

Tidak ada

fetchSize

Jumlah catatan yang diambil per batch dari server database. Nilai ini menentukan seberapa sering sistem sinkronisasi berkomunikasi dengan server dan memengaruhi kinerja ekstraksi.

Catatan

Nilai fetchSize yang terlalu besar dapat menyebabkan error kehabisan memori (OOM). Tingkatkan nilai ini secara bertahap berdasarkan beban ClickHouse.

Tidak

1.024

column

Kolom yang akan dibaca dari ClickHouse. Pisahkan nama kolom dengan koma. Contoh: "column": ["id", "name", "age"].

Catatan

Parameter column harus ditentukan dan tidak boleh kosong.

Ya

Tidak ada

jdbcUrl

URL koneksi JDBC untuk database sumber. jdbcUrl harus disertakan dalam blok konfigurasi connection.

  • Hanya satu nilai yang dapat dikonfigurasi per database.

  • Format jdbcUrl harus mengikuti spesifikasi resmi ClickHouse dan dapat mencakup parameter tambahan. Contoh: jdbc:clickhouse://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=gbk &autoReconnect=true&failOverReadOnly=false.

Ya

Tidak ada

username

Username untuk sumber data.

Ya

Tidak ada

password

Password untuk username yang ditentukan.

Ya

Tidak ada

splitPk

Saat mengekstraksi data dari ClickHouse, menentukan splitPk berarti Anda ingin melakukan sharding data menggunakan bidang yang diwakili oleh splitPk. Ini memungkinkan task sinkronisasi konkuren dan meningkatkan efisiensi.

Catatan

Saat splitPk dikonfigurasi, fetchSize menjadi wajib.

Tidak

Tidak ada

where

Kondisi filter. Dalam praktiknya, Anda sering hanya menyinkronkan data hari ini dengan mengatur where menjadi gmt_create>$bizdate.

Kondisi where memungkinkan sinkronisasi inkremental yang efektif. Jika Anda tidak menentukan pernyataan where, termasuk tidak memberikan kunci atau nilai untuk where, maka sinkronisasi data penuh akan dilakukan.

Tidak

Tidak ada

Demo skrip Writer

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"clickhouse",// Nama plug-in.
            "parameter":{
                "username": "",
                "password": "",
                "column": [// Bidang.
                    "id",
                    "name"
                ],
                "connection": [
                    {
                        "table": [// Nama tabel.
                            "ClickHouse_table"
                        ],
                        "jdbcUrl": "jdbc:clickhouse://ip:port/database"
                    }
                ],
                "preSql": [ // Pernyataan SQL yang dieksekusi sebelum task sinkronisasi dijalankan.
                    "TRUNCATETABLEIFEXISTStablename"
                ],
                "postSql": [// Pernyataan SQL yang dieksekusi setelah task sinkronisasi dijalankan.
                    "ALTERTABLEtablenameUPDATEcol1=1WHEREcol2=2"
                ],
                "batchSize": "1024",
                "batchByteSize": "67108864",
                "writeMode": "insert"
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah catatan error.
        },
        "speed":{
            "throttle":true,// Saat throttle bernilai false, mbps diabaikan (tanpa pembatasan kecepatan). Saat throttle bernilai true, pembatasan kecepatan diaktifkan.
            "concurrent":1, // Konkurensi pekerjaan.
            "mbps":"12"// Laju pembatasan kecepatan. 1 mbps = 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter skrip Writer

Parameter

Deskripsi

Wajib

Nilai default

jdbcUrl

URL koneksi JDBC untuk database tujuan. jdbcUrl harus disertakan dalam blok konfigurasi connection.

  • Hanya satu nilai yang dapat dikonfigurasi per database.

  • Format jdbcUrl harus mengikuti spesifikasi resmi ClickHouse dan dapat mencakup parameter tambahan. Contoh: jdbc:clickhouse://127.0.0.1:3306/database.

Ya

Tidak ada

username

Username untuk sumber data.

Ya

Tidak ada

password

Password untuk username yang ditentukan.

Ya

Tidak ada

table

Nama tabel tujuan, dijelaskan sebagai array JSON.

Catatan

Parameter table harus disertakan dalam blok konfigurasi connection.

Ya

Tidak ada

column

Bidang dalam tabel tujuan tempat menulis data. Pisahkan nama bidang dengan koma. Contoh: "column": ["id", "name", "age"].

Catatan

Parameter column harus ditentukan dan tidak boleh kosong.

Ya

Tidak ada

preSql

Pernyataan SQL yang dieksekusi sebelum menulis data ke tabel tujuan.

Tidak

Tidak ada

postSql

Pernyataan SQL yang dieksekusi setelah menulis data ke tabel tujuan.

Tidak

Tidak ada

batchSize

Jumlah catatan yang dikirimkan per batch. Nilai yang tepat sangat mengurangi interaksi jaringan antara sistem sinkronisasi dan ClickHouse serta meningkatkan throughput keseluruhan. Nilai yang terlalu besar dapat menyebabkan error kehabisan memori (OOM).

Tidak

1.024