DataWorks Integrasi Data mendukung pembacaan dan penulisan data ke Doris. Topik ini menjelaskan kemampuan sinkronisasi data untuk Doris di DataWorks.
Versi Doris yang didukung
Doris Writer menggunakan MySQL Driver 5.1.47. Tabel berikut mencantumkan versi Doris yang didukung. Untuk informasi lebih lanjut mengenai kemampuan driver tersebut, lihat dokumentasi resmi Doris.
Versi Doris | Didukung |
0.x.x | Dukungan |
1.1.x | Didukung |
1.2.x | Dukungan |
2.x | Dukungan |
Batasan
Integrasi Data hanya mendukung penulisan offline ke Doris.
Tipe bidang yang didukung
Versi Doris yang berbeda mendukung tipe data dan model agregasi yang berbeda. Untuk daftar lengkap tipe bidang pada setiap versi Doris, lihat dokumentasi resmi Doris. Tabel berikut menjelaskan dukungan terhadap tipe bidang utama Doris.
Tipe | Model yang didukung | Versi Doris | Penulisan offline (Doris Writer) |
SMALLINT | Aggregate,Unique,Duplicate | 0.x.x, 1.1.x, 1.2.x, 2.x | Didukung |
INT | Aggregate,Unique,Duplicate | 0.x.x, 1.1.x, 1.2.x, 2.x | Dukungan |
BIGINT | Aggregate,Unique,Duplicate | 0.x.x, 1.1.x, 1.2.x, 2.x | Didukung |
LARGEINT | Aggregate,Unique,Duplicate | 0.x.x, 1.1.x, 1.2.x, 2.x | Didukung |
FLOAT | Aggregate,Unique,Duplicate | 0.x.x, 1.1.x, 1.2.x, 2.x | Didukung |
DOUBLE | Aggregate,Unique,Duplicate | 0.x.x, 1.1.x, 1.2.x, 2.x | Didukung |
DECIMAL | Aggregate,Unique,Duplicate | 0.x.x, 1.1.x, 1.2.x, 2.x | Didukung |
DECIMALV3 | Aggregate,Unique,Duplicate | 1.2.1+, 2.x | Didukung |
DATE | Aggregate,Unique,Duplicate | 0.x.x, 1.1.x, 1.2.x, 2.x | Didukung |
DATETIME | Aggregate,Unique,Duplicate | 0.x.x, 1.1.x, 1.2.x, 2.x | Didukung |
DATEV2 | Aggregate,Unique,Duplicate | 1.2.x, 2.x | Didukung |
DATATIMEV2 | Aggregate,Unique,Duplicate | 1.2.x, 2.x | Dukungan |
CHAR | Aggregate,Unique,Duplicate | 0.x.x, 1.1.x, 1.2.x, 2.x | Didukung |
VARCHAR | Aggregate,Unique,Duplicate | 0.x.x, 1.1.x, 1.2.x, 2.x | Didukung |
STRING | Aggregate,Unique,Duplicate | 0.x.x, 1.1.x, 1.2.x, 2.x | Didukung |
VARCHAR | Aggregate,Unique,Duplicate | 1.1.x, 1.2.x, 2.x | Didukung |
ARRAY | Duplicate | 1.2.x, 2.x | Didukung |
JSONB | Aggregate,Unique,Duplicate | 1.2.x, 2.x | Didukung |
HLL | Aggregate | 0.x.x, 1.1.x, 1.2.x, 2.x | Didukung |
BITMAP | Aggregate | 0.x.x, 1.1.x, 1.2.x, 2.x | Didukung |
QUANTILE_STATE | Aggregate | 1.2.x, 2.x | Didukung |
Implementasi
Doris Writer menggunakan fitur asli StreamLoad dari Doris untuk mengimpor data. Doris Writer menyimpan data yang dibaca dari reader dalam memori, menggabungkannya ke dalam format teks, lalu mengimpor data tersebut secara batch ke database Doris. Untuk informasi lebih lanjut, lihat dokumentasi resmi Doris.
Prasyarat
Sebelum menyinkronkan data di DataWorks, Anda harus menyiapkan lingkungan Doris seperti yang dijelaskan dalam topik ini. Hal ini memastikan bahwa tugas sinkronisasi data Doris dapat dikonfigurasi dan dijalankan dengan benar di DataWorks. Bagian-bagian berikut menjelaskan persiapan yang diperlukan.
Konfirmasi versi Doris
Integrasi Data memiliki persyaratan versi untuk Doris. Periksa apakah versi Doris Anda didukung dengan merujuk ke bagian Versi Doris yang didukung. Anda dapat mengunduh dan menginstal versi yang diperlukan dari situs web resmi Doris.
Buat akun dan konfigurasikan izin
Anda harus membuat akun login dan menetapkan kata sandi untuk terhubung ke gudang data. Jika ingin menggunakan pengguna root bawaan untuk login, Anda harus menetapkan kata sandi karena pengguna root tidak memiliki kata sandi secara default. Anda dapat menjalankan pernyataan SQL berikut di Doris untuk menetapkan kata sandi:
SET PASSWORD FOR 'root' = PASSWORD('your_password')Konfigurasikan konektivitas jaringan untuk Doris
Untuk mengimpor data menggunakan StreamLoad, Anda harus mengakses titik akhir pribadi dari node frontend (FE). Jika Anda mengakses titik akhir publik dari node FE, Anda akan dialihkan ke alamat IP pribadi dari node backend (BE) (FAQ Operasi Data). Oleh karena itu, Anda harus menetapkan konektivitas jaringan antara Doris dan kelompok sumber daya arsitektur tanpa server atau grup sumber daya eksklusif untuk Integrasi Data yang Anda gunakan. Hal ini memungkinkan akses melalui titik akhir pribadi. Untuk informasi lebih lanjut tentang cara menetapkan konektivitas jaringan, lihat Solusi konektivitas jaringan.
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 infotips parameter di Konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.
Item berikut menjelaskan parameter konfigurasi untuk sumber data Doris:
JdbcUrl: Masukkan string koneksi JDBC, yang mencakup alamat IP, nomor port, database, dan parameter koneksi. Alamat IP publik maupun pribadi didukung. Jika menggunakan alamat IP publik, pastikan kelompok sumber daya Integrasi Data dapat mengakses host tempat Doris berada.
FE endpoint: Masukkan alamat IP dan port dari node FE. Jika kluster Anda memiliki beberapa node FE, Anda dapat memasukkan alamat IP dan port dari beberapa node FE, dipisahkan dengan koma (,), misalnya,
ip1:port1,ip2:port2. Saat menguji konektivitas, semua FE endpoint yang ditentukan akan diuji.Username: Masukkan nama pengguna untuk database Doris.
Password: Masukkan kata sandi yang sesuai dengan nama pengguna.
Kembangkan tugas sinkronisasi data
Untuk informasi mengenai titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Untuk informasi lebih lanjut mengenai prosedurnya, lihat Konfigurasikan tugas di Antarmuka tanpa kode dan Konfigurasikan tugas di editor kode.
Untuk daftar lengkap parameter dan demo skrip untuk editor kode, lihat Lampiran: Demo skrip dan parameter.
Lampiran: Demo 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 sesuai dengan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Konfigurasikan tugas di editor kode. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.
Demo skrip Reader
{
"type": "job",
"version": "2.0",// Nomor versi.
"steps": [
{
"stepType": "doris",// Nama plugin.
"parameter": {
"column": [// Nama kolom.
"id"
],
"connection": [
{
"querySql": [
"select a,b from join1 c join join2 d on c.id = d.id;"
],
"datasource": ""// Nama sumber data.
}
],
"where": "",// Kondisi filter.
"splitPk": "",// Kunci shard.
"encoding": "UTF-8"// Format encoding.
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"// Jumlah catatan kesalahan.
},
"speed": {
"throttle": true,// Jika Anda menetapkan throttle ke false, parameter mbps tidak berlaku, yang berarti tidak ada batasan laju. Jika Anda menetapkan throttle ke true, batasan laju diberlakukan.
"concurrent": 1,// Jumlah pekerjaan konkuren.
"mbps": "12"// Batasan laju. 1 mbps sama dengan 1 MB/s.
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}Parameter skrip Reader
Parameter | Deskripsi | Wajib | Nilai default |
datasource | Nama sumber data. Anda dapat menambahkan sumber data di editor kode. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan. | Ya | Tidak ada |
table | Nama tabel sumber dari mana Anda ingin menyinkronkan data. Tugas integrasi data hanya dapat membaca data dari satu tabel. Contoh berikut menunjukkan penggunaan lanjutan parameter table untuk mengonfigurasi rentang:
Catatan Tugas membaca data dari semua tabel yang cocok. Secara khusus, tugas membaca data dari kolom yang ditentukan oleh parameter column. Jika tabel atau kolom yang ditentukan tidak ada, tugas gagal. | Ya | Tidak ada |
column | Kolom di tabel sumber dari mana Anda ingin menyinkronkan data. Gunakan array JSON untuk menggambarkan informasi bidang. Secara default, semua kolom digunakan. Contoh:
| Ya | Tidak ada |
splitFactor | Faktor sharding. Anda dapat mengonfigurasi jumlah shard untuk sinkronisasi data. Jika Anda mengonfigurasi beberapa thread konkuren, data di-shard menjadi jumlah shard sebesar Concurrency × splitFactor. Misalnya, jika Concurrency adalah 5 dan splitFactor adalah 5, data di-shard menjadi 5 × 5 = 25 shard dan diproses oleh lima thread konkuren. Catatan Nilai yang direkomendasikan berkisar antara 1 hingga 100. Nilai yang terlalu besar dapat menyebabkan kesalahan kehabisan memori (OOM). | Tidak | 5 |
splitPk | Saat Doris Reader mengekstraksi data, jika Anda menentukan parameter splitPk, data di-shard berdasarkan bidang yang ditentukan. Hal ini memungkinkan tugas sinkronisasi data konkuren dan meningkatkan efisiensi.
| Tidak | Tidak ada |
where | Kondisi filter. Dalam skenario bisnis, Anda mungkin hanya ingin menyinkronkan data dari hari ini. Dalam hal ini, Anda dapat menyetel kondisi where menjadi
| Tidak | Tidak ada |
querySql (Parameter ini hanya tersedia di editor kode.) | Dalam beberapa skenario bisnis, parameter where mungkin tidak cukup untuk menggambarkan kondisi filter. Anda dapat menggunakan parameter ini untuk menyesuaikan pernyataan SQL filter. Jika Anda mengonfigurasi parameter ini, sistem sinkronisasi data mengabaikan parameter tabel, kolom, dan splitPk serta menggunakan pernyataan SQL yang ditentukan oleh parameter ini untuk memfilter data. Misalnya, untuk menggabungkan beberapa tabel sebelum menyinkronkan data, gunakan Catatan Parameter querySql bersifat case-sensitive. Misalnya, jika Anda memasukkan querysql, parameter tersebut tidak berlaku. | Tidak | Tidak ada |
Demo skrip Writer
{
"stepType": "doris",// Nama plugin.
"parameter":
{
"postSql":// Pernyataan SQL yang dijalankan setelah tugas sinkronisasi data dijalankan.
[],
"preSql":
[],// Pernyataan SQL yang dijalankan sebelum tugas sinkronisasi data dijalankan.
"datasource":"doris_datasource",// Nama sumber data.
"table": "doris_table_name",// Nama tabel.
"column":
[
"id",
"table_id",
"table_no",
"table_name",
"table_status"
],
"loadProps":{
"column_separator": "\\x01",// Pemisah kolom untuk format CSV.
"line_delimiter": "\\x02"// Pemisah baris untuk format CSV.
}
},
"name": "Writer",
"category": "writer"
}Parameter skrip Writer
Parameter | Deskripsi | Wajib | Nilai default |
datasource | Nama sumber data. Anda dapat menambahkan sumber data di editor kode. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan. | Ya | Tidak ada |
table | Nama tabel tujuan tempat Anda ingin menyinkronkan data. | Ya | Tidak ada |
column | Kolom di tabel tujuan tempat Anda ingin menulis data. Pisahkan nama kolom dengan koma (,). Contoh: | Ya | Tidak ada |
preSql | Pernyataan SQL yang dijalankan sebelum tugas sinkronisasi data dijalankan. Di Antarmuka tanpa kode, Anda hanya dapat menjalankan satu pernyataan SQL. Di editor kode, Anda dapat menjalankan beberapa pernyataan SQL. Misalnya, Anda dapat menghapus data lama dari tabel sebelum tugas dijalankan. | Tidak | Tidak ada |
postSql | Pernyataan SQL yang dijalankan setelah tugas sinkronisasi data dijalankan. Di Antarmuka tanpa kode, Anda hanya dapat menjalankan satu pernyataan SQL. Di editor kode, Anda dapat menjalankan beberapa pernyataan SQL. Misalnya, Anda dapat menambahkan stempel waktu setelah tugas dijalankan. | Tidak | Tidak ada |
maxBatchRows | Jumlah maksimum baris dalam setiap batch data yang diimpor. Parameter ini dan batchSize mengontrol ukuran impor setiap batch. Ketika data dalam satu batch mencapai salah satu dari dua ambang batas tersebut, impor batch tersebut dimulai. | Tidak | 500000 |
batchSize | Volume data maksimum setiap batch data yang diimpor. Parameter ini dan maxBatchRows mengontrol ukuran impor setiap batch. Ketika data dalam satu batch mencapai salah satu dari dua ambang batas tersebut, impor batch tersebut dimulai. | Tidak | 104857600 |
maxRetries | Jumlah percobaan ulang setelah impor batch gagal. | Tidak | 3 |
labelPrefix | Awalan label untuk setiap file yang diunggah. Label akhir adalah label unik global yang terdiri dari | Tidak | datax_doris_writer_ |
loadProps | Parameter permintaan untuk StreamLoad. Parameter ini terutama digunakan untuk mengonfigurasi format data yang diimpor. Secara default, data diimpor dalam format CSV. Jika Anda tidak mengonfigurasi parameter loadProps, format CSV default digunakan. Pemisah kolom adalah Jika Anda ingin mengimpor data dalam format JSON, gunakan konfigurasi berikut. | Tidak | Tidak ada |
Skrip untuk tipe agregasi (Doris Writer menulis ke tipe agregasi)
Doris Writer mendukung penulisan data tipe agregasi. Namun, Anda harus melakukan konfigurasi tambahan di editor kode. Contoh berikut menunjukkan konfigurasi yang diperlukan.
Sebagai contoh, pertimbangkan tabel Doris berikut. Kolom uuid bertipe bitmap (tipe agregasi), dan kolom sex bertipe HLL (tipe agregasi).
CREATE TABLE `example_table_1` (
`user_id` int(11) NULL,
`date` varchar(10) NULL DEFAULT "10.5",
`city` varchar(10) NULL,
`uuid` bitmap BITMAP_UNION NULL, -- Tipe agregasi
`sex` HLL HLL_UNION -- Tipe agregasi
) ENGINE=OLAP AGGREGATE KEY(`user_id`, `date`,`city`)
COMMENT 'OLAP' DISTRIBUTED BY HASH(`user_id`) BUCKETS 32Masukkan data mentah berikut ke dalam tabel:
user_id,date,city,uuid,sex
0,T0S4Pb,abc,43,'54'
1,T0S4Pd,fsd,34,'54'
2,T0S4Pb,fa3,53,'64'
4,T0S4Pb,fwe,87,'64'
5,T0S4Pb,gbr,90,'56'
2,iY3GiHkLF,234,100,'54'Saat menggunakan Doris Writer untuk menulis data tipe agregasi, Anda harus menentukan kolom di writer.parameter.column dan mengonfigurasi fungsi agregat di writer.parameter.loadProps.columns. Sebagai contoh, Anda dapat menggunakan fungsi agregat bitmap_hash untuk kolom uuid dan fungsi agregat hll_hash untuk kolom sex.
Kode berikut memberikan contoh skrip:
{
"stepType": "doris",// Nama plugin.
"writer":
{
"parameter":
{
"column":
[
"user_id",
"date",
"city",
"uuid",// Tipe agregasi bitmap
"sex"// Tipe agregasi HLL
],
"loadProps":
{
"format": "csv",
"column_separator": "\\x01",
"line_delimiter": "\\x02",
"columns": "user_id,date,city,k1,uuid=bitmap_hash(k1),k2,sex=hll_hash(k2)"// Anda harus menentukan fungsi agregat.
},
"postSql":
[
"select count(1) from example_tbl_3"
],
"preSql":
[],
"datasource":"doris_datasource",// Nama sumber data.
"table": "doris_table_name",// Nama tabel.
}
"name": "Writer",
"category": "writer"
}
}