All Products
Search
Document Center

DataWorks:Doris

Last Updated:Sep 04, 2026

Data Integration memungkinkan Anda menggunakan Doris Reader untuk membaca data dari Doris dan Doris Writer untuk menulis data tabel ke Doris. Topik ini menjelaskan kemampuan DataWorks Data Integration dalam menyinkronkan data Doris.

Versi Doris yang didukung

Doris Writer menggunakan MySQL Driver 5.1.47. Versi kernel yang didukung oleh driver tersebut adalah sebagai berikut. Untuk informasi lebih lanjut mengenai kemampuan driver, lihat dokumentasi resmi Doris.

Doris version

Supported

0.x.x

Yes

1.1.x

Yes

1.2.x

Yes

2.x

Yes

Batasan penggunaan

Data Integration mendukung sinkronisasi data Doris secara offline (offline read dan offline write).

Tipe data yang didukung

Versi Doris yang berbeda mendukung tipe data dan model agregasi yang berbeda. Untuk informasi lengkap mengenai semua tipe data yang didukung di setiap versi Doris, lihat dokumentasi resmi Doris. Tabel berikut menjelaskan tipe data utama yang didukung.

Data type

Supported model

Doris version

Offline write (Doris Writer)

SMALLINT

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

Yes

INT

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

Yes

BIGINT

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

Yes

LARGEINT

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

Yes

FLOAT

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

Yes

DOUBLE

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

Yes

DECIMAL

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

Yes

DECIMALV3

Aggregate,Unique,Duplicate

Versions later than 1.2.1, 2.x

Yes

DATE

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

Yes

DATETIME

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

Yes

DATEV2

Aggregate,Unique,Duplicate

1.2.x, 2.x

Yes

DATETIMEV2

Aggregate,Unique,Duplicate

1.2.x, 2.x

Yes

CHAR

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

Yes

VARCHAR

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

Yes

STRING

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

Yes

ARRAY

Duplicate

1.2.x, 2.x

Yes

JSON

Aggregate,Unique,Duplicate

1.2.x, 2.x

Yes

HLL

Aggregate

0.x.x, 1.1.x, 1.2.x, 2.x

Yes

BITMAP

Aggregate

0.x.x, 1.1.x, 1.2.x, 2.x

Yes

QUANTILE_STATE

Aggregate

1.2.x, 2.x

Yes

Cara kerja

Doris Writer menulis data dengan menggunakan StreamLoad yang didukung secara native oleh Doris. Doris Writer menyimpan data yang dibaca oleh reader di memori, menggabungkannya menjadi teks, lalu mengimpor teks tersebut ke database Doris secara batch. Untuk informasi lebih lanjut, lihat dokumentasi resmi Doris.

Siapkan lingkungan ApsaraDB for OceanBase sebelum sinkronisasi data

Sebelum menggunakan DataWorks untuk menyinkronkan data ke sumber data Doris, Anda harus terlebih dahulu menyiapkan lingkungan Doris. Hal ini memastikan bahwa tugas sinkronisasi data dapat dikonfigurasi dan mampu menyinkronkan data ke sumber data Doris sesuai harapan. Informasi berikut menjelaskan cara menyiapkan lingkungan Doris untuk sinkronisasi data ke sumber data Doris.

Konfirmasi versi Doris

Data Integration memiliki persyaratan terhadap versi Doris. Anda dapat memeriksa apakah versi kluster Doris yang ingin Anda sinkronkan datanya memenuhi persyaratan berdasarkan bagian Versi Doris yang didukung. Anda dapat mengunduh versi tertentu dari situs web resmi Doris dan menginstalnya.

Buat akun dan berikan izin

Anda harus membuat akun yang digunakan untuk login ke database Doris guna operasi selanjutnya. Tentukan password untuk akun tersebut agar dapat terhubung ke database Doris. Jika Anda ingin menggunakan user root default Doris untuk login ke database Doris, Anda harus menentukan password untuk user root tersebut karena secara default user root tidak memiliki password. Anda dapat mengeksekusi pernyataan SQL di Doris untuk menentukan password:

SET PASSWORD FOR 'root' = PASSWORD('Password')

Konfigurasi koneksi jaringan untuk Doris

Untuk menggunakan metode StreamLoad dalam menulis data, Anda perlu mengakses alamat IP pribadi node FE. Jika Anda mengakses alamat IP publik node FE, Anda akan dialihkan ke alamat IP pribadi node BE. Untuk informasi lebih lanjut mengenai pengalihan ini, lihat Masalah operasi data. Dalam kasus ini, Anda harus membuat koneksi jaringan antara sumber data Anda dan serverless resource group atau grup sumber daya eksklusif untuk Data Integration agar resource group tersebut dapat mengakses sumber data melalui jaringan internal. Untuk informasi lebih lanjut mengenai cara membuat koneksi jaringan antara database Doris dan resource group, 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 dalam Konfigurasi sumber data. Anda dapat melihat deskripsi parameter di konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.

Perhatikan persyaratan konfigurasi untuk item konfigurasi berikut pada 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 Anda menggunakan alamat IP publik, pastikan resource group Data Integration dapat mengakses host tempat instans Doris Anda berada.

  • FE endpoint: Masukkan alamat IP dan port node FE. Jika kluster Anda memiliki beberapa node FE, Anda dapat memasukkan beberapa endpoint yang dipisahkan koma, misalnya ip1:port1,ip2:port2. Saat menguji koneksi, DataWorks menguji konektivitas ke semua FE endpoint yang ditentukan.

  • Username: Masukkan username untuk mengakses database Doris.

  • Password: Masukkan password yang sesuai dengan username tersebut.

  • Advanced Parameters: Sumber data Doris mendukung berbagai parameter lanjutan yang memperluas konfigurasi koneksi. Misalnya, untuk menyesuaikan timeout kueri Java Database Connectivity (JDBC), tambahkan parameter queryTimeout ke parameter lanjutan. Nilainya dalam satuan detik, dan queryTimeout=600 mengatur timeout menjadi 600 detik. Setelah Anda mengatur parameter ini, parameter tersebut akan secara otomatis ditambahkan ke string koneksi JDBC. queryTimeout hanya berlaku di tingkat sumber data. Anda tidak dapat mengonfigurasi queryTimeout secara terpisah untuk node sinkronisasi batch. Konfigurasikan secara terpusat di sumber data.

Kembangkan tugas sinkronisasi data

Untuk informasi mengenai titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.

Lampiran: Kode dan parameter

Konfigurasi tugas sinkronisasi batch menggunakan editor kode

Jika Anda 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 Konfigurasi mode skrip. 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 plug-in. 
      "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": "",// Klausul WHERE. 
        "splitPk": "",// Kunci shard. 
        "encoding": "UTF-8"// Format encoding. 
      },
      "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. Nilai false berarti pembatasan kecepatan dinonaktifkan, dan nilai true berarti pembatasan kecepatan diaktifkan. Parameter mbps hanya berlaku ketika parameter throttle diatur ke true. 
      "concurrent": 1,// Jumlah maksimum thread paralel. 
      "mbps": "12"// Laju transmisi maksimum. Satuan: MB/s. 
    }
  },
  "order": {
    "hops": [
      {
        "from": "Reader",
        "to": "Writer"
      }
    ]
  }
}

Parameter skrip Reader

Parameter

Description

Required

Default value

datasource

Nama sumber data. Harus sama dengan nama sumber data yang telah ditambahkan. Anda dapat menambahkan sumber data menggunakan editor kode.

Yes

No default value

table

Nama tabel dari mana Anda ingin membaca data. Setiap tugas sinkronisasi hanya dapat digunakan untuk menyinkronkan data dari satu tabel.

Untuk tabel yang di-shard, Anda dapat menggunakan parameter table untuk menentukan partisi dari mana Anda ingin membaca data. Contoh:

  • Anda dapat mengonfigurasi rentang untuk membaca data dari database dan tabel yang di-shard. Misalnya, 'table_[0-99]' menentukan bahwa data dibaca dari 'table_0', 'table_1', dan 'table_2', hingga 'table_99'.

  • Jika tabel Anda memiliki sufiks numerik dengan panjang yang sama, seperti 'table_000', 'table_001', dan 'table_002', hingga 'table_999', Anda dapat mengonfigurasi parameter sebagai '"table": ["table_00[0-9]", "table_0[10-99]", "table_[100-999]"]'.

Catatan

Doris Reader membaca data dari kolom yang ditentukan oleh parameter column di partisi yang ditentukan oleh parameter table. Jika partisi atau kolom yang ditentukan tidak ada, tugas sinkronisasi akan gagal.

Yes

No default value

column

Kolom yang ingin Anda sinkronkan. Kolom-kolom tersebut dijelaskan dalam array JSON. Secara default, semua kolom disinkronkan. Misalnya, gunakan ["*"].

  • Pemangkasan kolom: Anda dapat memilih subset kolom untuk diekspor.

  • Urutan kolom dapat diubah. Artinya, Anda dapat menentukan kolom dalam urutan yang berbeda dari urutan yang ditentukan oleh skema tabel sumber.

  • Konfigurasi konstanta: Anda harus mengikuti sintaks SQL Doris. Contoh: ["id","`table`","1","'mingya.wmy'","'null'","to_char(a+1)","2.3","true"].

    • id: nama kolom.

    • table: nama kolom yang berisi kata kunci yang dicadangkan.

    • 1: konstanta integer.

    • 'mingya.wmy': konstanta string, yang diapit tanda kutip tunggal (').

    • null:

      • " " menunjukkan string kosong.

      • null menunjukkan nilai null.

      • 'null' menunjukkan string "null".

    • to_char(a+1): ekspresi fungsi yang digunakan untuk menghitung panjang string.

    • 2.3: konstanta floating-point.

    • true: nilai Boolean.

  • Parameter column harus secara eksplisit menentukan semua kolom dari mana Anda ingin membaca data. Parameter ini tidak boleh dibiarkan kosong.

Yes

No default value

splitPk

Untuk meningkatkan kinerja baca, Anda dapat menggunakan parameter splitPk untuk menentukan kunci shard. Data Integration menggunakan kunci ini untuk mempartisi data dan menjalankan tugas secara konkuren.

  • Kami menyarankan Anda mengatur parameter splitPk ke nama kolom kunci primer tabel. Data dapat didistribusikan secara merata ke shard yang berbeda berdasarkan kolom kunci primer, bukan hanya terkonsentrasi pada shard tertentu.

  • Parameter splitPk hanya mendukung sharding untuk data bertipe integer. Jika Anda mengatur parameter splitPk ke bidang dengan tipe data yang tidak didukung, seperti string, floating point, atau tanggal, pengaturan parameter ini akan diabaikan, dan satu thread digunakan untuk membaca data.

  • Jika parameter splitPk tidak diberikan atau dibiarkan kosong, satu thread digunakan untuk membaca data.

No

No default value

where

Kondisi filter. Dalam banyak skenario bisnis, Anda mungkin hanya ingin menyinkronkan data dari hari ini. Untuk melakukan ini, Anda dapat menentukan kondisi where sebagai gmt_create > $bizdate.

  • Anda dapat menggunakan klausa WHERE untuk membaca data inkremental. Jika parameter where tidak diberikan atau dibiarkan kosong, Doris Reader membaca semua data.

  • Jangan mengatur parameter where ke limit 10. Nilai ini tidak sesuai dengan batasan Doris pada klausa SQL WHERE.

No

No default value

querySql (parameter lanjutan, hanya tersedia di editor kode)

Dalam beberapa skenario bisnis, parameter where mungkin tidak cukup untuk menggambarkan kondisi filter yang diinginkan. Anda dapat menggunakan parameter ini untuk menentukan kueri SQL kustom untuk filtering. Jika Anda mengonfigurasi parameter ini, Data Integration mengabaikan parameter table, column, where, dan splitPk, serta menggunakan kueri kustom untuk mengambil data. Misalnya, untuk menggabungkan beberapa tabel sebelum sinkronisasi, Anda dapat menggunakan kueri seperti select a,b from table_a join table_b on table_a.id = table_b.id. Parameter querySql memiliki prioritas lebih tinggi daripada parameter table, column, where, dan splitPk. Parameter datasource tetap diperlukan agar sistem dapat mengambil detail koneksi seperti username dan password.

Catatan

Nama parameter querySql bersifat case-sensitive. Misalnya, querysql tidak berlaku.

No

No default value

Demo skrip Writer

{
  "stepType": "doris",// Nama plug-in. 
  "parameter":
  {
    "postSql":// Pernyataan SQL yang ingin dieksekusi setelah tugas sinkronisasi dijalankan. 
    [],
    "preSql":
    [],// Pernyataan SQL yang ingin dieksekusi sebelum tugas sinkronisasi 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 data dalam format CSV.
      "line_delimiter": "\\x02"// Pemisah baris data dalam format CSV.
    }
  },
  "name": "Writer",
  "category": "writer"
}

Parameter skrip Writer

Parameter

Description

Required

Default value

datasource

Nama sumber data. Harus sama dengan nama sumber data yang telah ditambahkan. Anda dapat menambahkan sumber data menggunakan editor kode.

Yes

No default value

table

Nama tabel dari mana Anda ingin membaca data.

Yes

No default value

column

Kolom tujuan untuk menulis data. Tentukan nama kolom dalam bentuk array, misalnya "column":["id","name","age"]. Untuk menulis data ke semua kolom secara berurutan, gunakan tanda bintang (*) dalam array, misalnya "column":["*"].

Yes

No default value

preSql

Pernyataan SQL yang dieksekusi sebelum tugas sinkronisasi data dimulai. Di Antarmuka tanpa kode, Anda hanya dapat mengeksekusi satu pernyataan SQL. Di editor kode, Anda dapat mengeksekusi beberapa pernyataan SQL. Misalnya, Anda dapat menggunakan pernyataan ini untuk menghapus data yang ada dari tabel.

No

No default value

postSql

Pernyataan SQL yang ingin dieksekusi setelah tugas sinkronisasi dijalankan. Misalnya, Anda dapat mengatur parameter ini ke pernyataan SQL yang digunakan untuk menambahkan timestamp. Anda hanya dapat mengeksekusi satu pernyataan SQL di Antarmuka tanpa kode dan beberapa pernyataan SQL di editor kode.

No

No default value

maxBatchRows

Jumlah maksimum baris yang dapat Anda tulis ke tabel tujuan sekaligus. Parameter ini dan parameter batchSize menentukan jumlah catatan data yang dapat Anda tulis ke tabel tujuan sekaligus. Setiap kali data yang di-cache mencapai nilai salah satu parameter tersebut, writer mulai menulis data ke tabel tujuan.

No

500000

batchSize

Jumlah maksimum data yang dapat Anda tulis ke tabel tujuan sekaligus. Parameter ini dan parameter maxBatchRows menentukan jumlah catatan data yang dapat Anda tulis ke tabel tujuan sekaligus. Setiap kali data yang di-cache mencapai nilai salah satu parameter tersebut, writer mulai menulis data ke tabel tujuan.

No

104857600

maxRetries

Jumlah maksimum percobaan ulang yang diizinkan setelah Anda gagal menulis beberapa catatan data ke tabel tujuan sekaligus.

No

3

labelPrefix

Awalan label untuk setiap batch file yang diunggah. Label akhir merupakan kombinasi dari labelPrefix + UUID untuk memastikan setiap impor bersifat idempoten, mencegah duplikasi data.

No

datax_doris_writer_

loadProps

Parameter permintaan untuk StreamLoad, terutama digunakan untuk mengonfigurasi format data impor. Secara default, data diimpor dalam format CSV. Jika parameter loadProps tidak dikonfigurasi, format CSV default digunakan, dengan \t sebagai pemisah kolom dan \n sebagai pemisah baris. Konfigurasi default adalah sebagai berikut:

"loadProps": {
    "format":"csv",
    "column_separator": "\t",
    "line_delimiter": "\n"
}

Jika Anda ingin menulis data dalam format JSON, gunakan pengaturan berikut:

"loadProps": {
    "format": "json"
}

No

No default value

Menulis data tipe agregat

Anda dapat menggunakan Doris Writer untuk menulis data tipe agregat, tetapi Anda harus melakukan konfigurasi tambahan di editor kode.

Misalnya, pada tabel Doris berikut, uuid bertipe bitmap (tipe agregasi) dan sex bertipe HLL (tipe agregasi).

CREATE TABLE `example_table_1` (
  `user_id` int(11) NOT NULL,
  `date` varchar(10) NOT NULL,
  `city` varchar(10) NOT NULL,
  `uuid` bitmap BITMAP_UNION, -- Tipe agregasi
  `sex` HLL HLL_UNION  -- Tipe agregasi
) ENGINE=OLAP AGGREGATE KEY(`user_id`, `date`, `city`)
COMMENT 'OLAP' DISTRIBUTED BY HASH(`user_id`) BUCKETS 32

Data mentah yang akan disinkronkan terdiri dari lima kolom, seperti ditunjukkan di bawah. Nilai dalam kolom uuid dan sex adalah nilai mentah (angka dan string biasa), bukan nilai bertipe bitmap atau HLL:

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'

Nilai mentah tidak dapat langsung ditulis ke kolom bitmap atau HLL. Nilai-nilai tersebut harus dikonversi menggunakan fungsi agregat. Parameter columns pada Doris Stream Load dapat menyelesaikan konversi tersebut. Aturan pemetaannya adalah sebagai berikut: kolom dalam file dipetakan secara berurutan ke nama kolom yang tidak mengandung tanda sama dengan (=) dalam columns, sedangkan entri yang mengandung tanda sama dengan (=) merupakan transformasi ekspresi (nilai kolom tujuan dihitung dari ekspresi) dan tidak menempati posisi kolom file.

Oleh karena itu, pemetaan antara kolom file dan kolom tabel dalam contoh ini adalah sebagai berikut:

  • Kolom 1 hingga 3 dalam file (user_id, date, dan city): langsung ditulis ke kolom tabel dengan nama yang sama.

  • Kolom 4 dalam file (nilai mentah uuid): ditetapkan ke kolom placeholder sementara k1, dikonversi menjadi bitmap oleh ekspresi uuid=bitmap_hash(k1), dan ditulis ke kolom tabel uuid.

  • Kolom 5 dalam file (nilai mentah sex): ditetapkan ke kolom placeholder sementara k2, dikonversi menjadi nilai HLL oleh ekspresi sex=hll_hash(k2), dan ditulis ke kolom tabel sex.

k1 dan k2 adalah nama placeholder sementara yang tidak ditulis ke tabel. Anda dapat mengganti nama tersebut dengan nama lain, asalkan nama yang dirujuk dalam ekspresi konsisten dengan nama kolom placeholder.

Saat menggunakan Doris Writer untuk menulis data tipe agregat, Anda harus menentukan kolom yang akan ditulis di writer.parameter.column dan mengonfigurasi aturan konversi di atas di writer.parameter.loadProps.columns. uuid dan sex di writer.parameter.column adalah nama bidang nilai mentah dalam catatan sinkronisasi. Mereka hanya menentukan bidang yang akan ditulis dan urutan penulisan. File CSV tidak berisi nama kolom, dan Stream Load mengidentifikasi kolom berdasarkan posisi. Oleh karena itu, Anda dapat menggunakan nama kustom untuk kolom keempat dan kelima dalam parameter columns (k1 dan k2 dalam contoh ini).

Kode contoh:

{
    "stepType": "doris",
    "parameter": {
        "datasource": "doris_datasource",
        "table": "example_table_1",
        "column": [
            "user_id",
            "date",
            "city",
            "uuid",
            "sex"
        ],
        "loadProps": {
            "format": "csv",
            "column_separator": "\\x01",
            "line_delimiter": "\\x02",
            "columns": "user_id,date,city,k1,uuid=bitmap_hash(k1),k2,sex=hll_hash(k2)"
        },
        "preSql": [],
        "postSql": []
    },
    "name": "Writer",
    "category": "writer"
}