Sumber Data ClickHouse di DataWorks memungkinkan Anda membaca dari dan menulis ke ClickHouse. Topik ini menjelaskan kemampuan sinkronisasi data yang didukung serta konfigurasi yang diperlukan.
Versi yang didukung
Sumber Data ini mendukung versi ApsaraDB for ClickHouse berikut dan versi driver Java Database Connectivity (JDBC) yang kompatibel.
Versi driver JDBC | Versi kernel ApsaraDB for ClickHouse |
0.2.4 | 20.8, 21.8 |
0.4.0, 0.4.2 | 22.8, 23.8, 25.3 |
Batasan
Sumber Data ClickHouse hanya mendukung operasi Batch Read dan Write.
Anda dapat menggunakan Serverless Resource Groups.
Koneksi dibuat menggunakan Java Database Connectivity (JDBC), dan pembacaan data dibatasi pada pernyataan JDBC.
Pemfilteran dan pengubahan urutan kolom didukung.
Untuk mencegah beban kerja tinggi pada ClickHouse, kami merekomendasikan mengatur throughput maksimum menjadi 1.000 Transactions Per Second (TPS) saat menggunakan ClickHouse Writer dalam mode INSERT.
Sinkronisasi batch untuk satu tabel ClickHouse hanya didukung untuk ApsaraDB for ClickHouse.
Tipe data yang didukung
Tabel berikut mencantumkan tipe data ApsaraDB for ClickHouse umum yang didukung. Untuk daftar lengkap tipe data ApsaraDB for ClickHouse, lihat Tipe data. Tipe data dari dokumentasi open source resmi ClickHouse yang tidak tercantum dalam daftar ini tidak didukung. Untuk daftar lengkap tipe data open source ClickHouse, lihat Dokumentasi ClickHouse.
Tipe | ClickHouse Reader | ClickHouse writer |
Int8 | Didukung | Didukung |
Int16 | Didukung | Didukung |
Int32 | Didukung | Didukung |
Int64 | Didukung | Didukung |
UInt8 | Didukung | Didukung |
UInt16 | Didukung | Didukung |
UInt32 | Didukung | Didukung |
UInt64 | Didukung | Didukung |
Float32 | Didukung | Didukung |
Float64 | Didukung | Didukung |
Decimal | Didukung | Didukung |
String | Didukung | Didukung |
FixedString | Didukung | Didukung |
Date | Didukung | Didukung |
DateTime | Didukung | Didukung |
DateTime64 | Didukung | Didukung |
Boolean | Didukung Catatan ClickHouse tidak memiliki tipe Boolean native. Anda dapat menggunakan UInt8 atau Int8 sebagai alternatif. | Didukung |
Array | Didukung sebagian. Hanya didukung jika elemen array bertipe integer, floating-point, string, atau DateTime64 (presisi milidetik). | Didukung |
Tuple | Didukung | Didukung |
Domain(IPv4,IPv6) | Didukung | Didukung |
Enum8 | Didukung | Didukung |
Enum16 | Didukung | Didukung |
Nullable | Didukung | Didukung |
Nested | Didukung sebagian. Hanya didukung jika tipe data nested berupa integer, floating-point, string, atau DateTime64 (presisi milidetik). | Didukung |
Tambahkan sumber data
Sebelum mengembangkan tugas 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.
Sinkronisasi data
Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Sinkronisasi batch tabel tunggal
Untuk petunjuknya, lihat Konfigurasikan tugas di UI Tanpa Kode dan Konfigurasikan tugas di Editor Kode.
Untuk daftar lengkap parameter dan contoh skrip konfigurasi tugas di Editor Kode, lihat Lampiran: Contoh skrip dan deskripsi parameter.
Sinkronisasi batch seluruh database
Untuk petunjuknya, lihat Konfigurasikan tugas Sinkronisasi Batch Seluruh Database.
Lampiran: Contoh skrip dan parameter
Konfigurasikan tugas sinkronisasi batch menggunakan editor kode
Jika ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Gunakan editor kode. Informasi berikut menjelaskan parameter yang harus dikonfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.
Contoh skrip reader
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "clickhouse", // Nama konektor.
"parameter": {
"datasource": "example",
"table": "source_table", // Tabel sumber.
"column": [ // Kolom yang akan dibaca.
"id",
"name"
],
"where": "", // Kondisi filter.
"splitPk": "", // Kunci shard untuk pembacaan paralel.
"fetchSize": 1024 // Jumlah catatan yang diambil per batch.
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0" // Jumlah maksimum Catatan Data Kotor yang diizinkan.
},
"speed": {
"throttle": true, // Menentukan apakah pembatasan kecepatan diaktifkan.
"concurrent": 1, // Jumlah thread konkuren untuk pekerjaan.
"mbps": "12" // Laju transfer maksimum dalam MB/s.
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}Parameter skrip reader
Parameter | Deskripsi | Wajib | Bawaan |
datasource | Nama Sumber Data ClickHouse yang telah Anda buat di DataWorks. | Ya | Tidak ada |
table | Tabel sumber tempat data dibaca. Catatan table harus disertakan dalam blok konfigurasi connection. | Ya | Tidak ada |
fetchSize | Jumlah catatan yang diambil dari database dalam setiap batch. Nilai yang lebih besar dapat mengurangi interaksi jaringan dan meningkatkan kinerja ekstraksi data. Catatan Mengatur nilai ini terlalu tinggi dapat menyebabkan Error Out-of-Memory (OOM). Kami merekomendasikan menaikkan nilai secara bertahap berdasarkan penggunaan resource dan beban kerja ClickHouse Anda. | Tidak | 1024 |
column | Kolom yang akan dibaca dari ClickHouse. Pisahkan nama kolom dengan koma. Contoh: Catatan Parameter column wajib dan tidak boleh kosong. | Ya | Tidak ada |
jdbcUrl | String koneksi Java Database Connectivity (JDBC) ke database sumber. Parameter jdbcUrl terdapat dalam unit konfigurasi koneksi.
| Ya | Tidak ada |
username | Username untuk sumber data. | Ya | Tidak ada |
password | Password untuk username sumber data. | Ya | Tidak ada |
splitPk | Saat ClickHouse mengekstraksi data, menentukan splitPk akan melakukan sharding data berdasarkan bidang yang direpresentasikan oleh splitPk. Sinkronisasi Data kemudian memulai tugas konkuren untuk meningkatkan efisiensi sinkronisasi. Catatan Parameter fetchSize wajib saat splitPk dikonfigurasi. | Tidak | Tidak ada |
where | Kondisi filter. Misalnya, untuk menyinkronkan data hari ini, atur kondisi where menjadi Kondisi where memungkinkan Anda melakukan sinkronisasi data inkremental. Jika Anda tidak menentukan pernyataan where, atau tidak memberikan kunci atau nilai untuk where, maka sinkronisasi data penuh akan dilakukan. | Tidak | Tidak ada |
Contoh skrip writer
{
"type": "job",
"version": "2.0", // Versi skrip.
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "clickhouse", // Nama konektor.
"parameter": {
"datasource": "example_ch_writer", // Nama sumber data target.
"column": [ // Kolom target.
"id",
"name"
],
"table": "target_table", // Tabel target.
"preSql": [ // Pernyataan SQL yang dijalankan sebelum tugas dimulai.
"TRUNCATE TABLE IF EXISTS target_table"
],
"postSql": [ // Pernyataan SQL yang dijalankan setelah tugas selesai.
"OPTIMIZE TABLE target_table FINAL"
],
"batchSize": 1024, // Jumlah catatan yang ditulis per batch.
"writeMode": "insert"
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0" // Jumlah maksimum Catatan Data Kotor yang diizinkan.
},
"speed": {
"throttle": true, // Menentukan apakah pembatasan kecepatan diaktifkan.
"concurrent": 1, // Jumlah thread konkuren untuk pekerjaan.
"mbps": "12" // Laju transfer maksimum dalam MB/s.
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}Parameter skrip writer
Parameter | Deskripsi | Wajib | Bawaan |
jdbcUrl | String koneksi JDBC untuk database tujuan. Parameter jdbcUrl termasuk dalam blok konfigurasi connection.
| Ya | Tidak ada |
datasource | Nama Sumber Data ClickHouse yang telah Anda buat di DataWorks. | Ya | Tidak ada |
password | Password untuk username sumber data. | Ya | Tidak ada |
table | Tabel target tempat data ditulis. Catatan table harus berada dalam blok konfigurasi connection. | Ya | Tidak ada |
column | Kolom target tempat data ditulis. Tentukan nama kolom dalam bentuk array JSON. Contoh: Catatan Parameter column wajib dan tidak boleh kosong. | Ya | Tidak ada |
preSql | Pernyataan SQL yang dijalankan sebelum tugas penulisan dimulai. | Tidak | Tidak ada |
postSql | Pernyataan SQL yang dijalankan setelah tugas penulisan selesai. | Tidak | Tidak ada |
batchSize | Jumlah catatan yang ditulis dalam setiap batch. Nilai yang lebih besar dapat mengurangi interaksi jaringan dengan ClickHouse dan meningkatkan Throughput secara keseluruhan. | Tidak | 1024 |