全部产品
Search
文档中心

DataWorks:Sumber data Doris

更新时间:Nov 10, 2025

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.

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:

  • 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', 'table_2', hingga 'table_99'.

  • Jika akhiran numerik nama tabel Anda memiliki panjang yang sama, seperti 'table_000', 'table_001', 'table_002', hingga 'table_999', Anda dapat menyetel parameter menjadi '"table": ["table_00[0-9]", "table_0[10-99]", "table_[100-999]"]'.

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: [ * ].

  • Mendukung pemilihan kolom: Anda dapat memilih kolom tertentu untuk diekspor.

  • Mendukung pengubahan urutan kolom: Anda dapat mengekspor kolom dalam urutan yang berbeda dari skema tabel.

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

    • id adalah nama kolom biasa.

    • table adalah nama kolom yang juga merupakan kata terbatas.

    • 1 adalah konstanta bilangan bulat.

    • 'mingya.wmy' adalah konstanta string. Perhatikan bahwa harus diapit tanda kutip tunggal.

    • Tentang null:

      • " " menunjukkan string kosong.

      • null menunjukkan nilai null.

      • 'null' menunjukkan string "null".

    • to_char(a+1) adalah fungsi yang menghitung panjang string.

    • 2.3 adalah bilangan titik mengambang.

    • true adalah Nilai Boolean.

  • Anda harus secara eksplisit menentukan kolom untuk sinkronisasi dalam parameter column. Parameter ini tidak boleh kosong.

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.

  • Kami merekomendasikan agar Anda menggunakan kunci primer tabel untuk splitPk. Hal ini karena nilai dalam kolom kunci primer biasanya terdistribusi merata, yang mencegah hot spot data di shard.

  • Saat ini, splitPk hanya mendukung sharding untuk data bilangan bulat. Tidak mendukung string, bilangan titik mengambang, tanggal, atau tipe data lainnya. Jika Anda menentukan tipe data yang tidak didukung, fitur splitPk diabaikan, dan data disinkronkan dalam satu saluran.

  • Jika Anda tidak menentukan parameter splitPk, atau nilainya kosong, data disinkronkan dalam satu saluran.

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 gmt_create>$bizdate.

  • Kondisi where memungkinkan sinkronisasi data inkremental yang efisien. Jika Anda tidak menentukan klausa where, termasuk menghilangkan kunci atau nilainya, semua data disinkronkan.

  • Anda tidak dapat menyetel kondisi where menjadi limit 10. Hal ini tidak sesuai dengan batasan klausa WHERE SQL Doris.

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 select a,b from table_a join table_b on table_a.id = table_b.id. Saat Anda mengonfigurasi parameter querySql, Doris Reader mengabaikan parameter table, column, where, dan splitPk. Parameter querySql memiliki prioritas lebih tinggi daripada parameter table, column, where, dan splitPk. Parameter datasource digunakan untuk mengurai informasi seperti nama pengguna dan kata sandi.

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: "column":["id","name","age"]. Untuk menulis data ke semua kolom secara berurutan, gunakan (*). Contoh: "column":["*"].

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 labelPrefix + UUID. Hal ini memastikan bahwa data tidak diimpor berulang kali.

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 \t dan pemisah baris adalah \n. Konfigurasinya sebagai berikut.

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

Jika Anda ingin mengimpor data dalam format JSON, gunakan konfigurasi berikut.

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

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 32

Masukkan 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"
    }
}