Tüm Ürünler
Search
Belge Merkezi

DataWorks:Doris

Son Güncelleme:Oct 05, 2026

Data Integration, Doris Reader kullanarak Doris'ten veri okumanıza ve Doris Writer kullanarak tablo verilerini Doris'e yazmanıza olanak tanır. Bu konuda, DataWorks Data Integration'ın Doris veri senkronizasyonundaki yetenekleri açıklanmaktadır.

Desteklenen Doris sürümleri

Doris Writer, MySQL Driver 5.1.47 kullanır. Sürücü tarafından desteklenen çekirdek sürümleri aşağıda verilmiştir. Sürücü yetenekleri hakkında daha fazla bilgi için Doris resmi belgelerine bakın.


Doris sürümü


Destekleniyor


0.x.x


Evet


1.1.x


Evet


1.2.x


Evet


2.x


Evet

Kullanım kısıtlamaları

Data Integration, Doris verilerinin çevrimdışı senkronizasyonunu (çevrimdışı okuma ve çevrimdışı yazma) destekler.

Desteklenen veri türleri

Farklı Doris sürümleri farklı veri türlerini ve toplama modellerini destekler. Her Doris sürümünde desteklenen tüm veri türleri hakkında bilgi için resmi Doris belgelerine bakın. Aşağıdaki tabloda başlıca desteklenen veri türleri açıklanmaktadır.


Veri türü


Desteklenen model


Doris sürümü


Çevrimdışı yazma (Doris Writer)


SMALLINT


Aggregate,Unique,Duplicate


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


Evet


INT


Aggregate,Unique,Duplicate


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


Evet


BIGINT


Aggregate,Unique,Duplicate


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


Evet


LARGEINT


Aggregate,Unique,Duplicate


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


Evet


FLOAT


Aggregate,Unique,Duplicate


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


Evet


DOUBLE


Aggregate,Unique,Duplicate


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


Evet


DECIMAL


Aggregate,Unique,Duplicate


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


Evet


DECIMALV3


Aggregate,Unique,Duplicate


1.2.1'den sonraki sürümler, 2.x


Evet


DATE


Aggregate,Unique,Duplicate


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


Evet


DATETIME


Aggregate,Unique,Duplicate


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


Evet


DATEV2


Aggregate,Unique,Duplicate


1.2.x, 2.x


Evet


DATETIMEV2


Aggregate,Unique,Duplicate


1.2.x, 2.x


Evet


CHAR


Aggregate,Unique,Duplicate


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


Evet


VARCHAR


Aggregate,Unique,Duplicate


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


Evet


STRING


Aggregate,Unique,Duplicate


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


Evet


ARRAY


Duplicate


1.2.x, 2.x


Evet


JSON


Aggregate,Unique,Duplicate


1.2.x, 2.x


Evet


HLL


Aggregate


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


Evet


BITMAP


Aggregate


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


Evet


QUANTILE_STATE


Aggregate


1.2.x, 2.x


Evet

Nasıl çalışır

Doris Writer, Doris tarafından yerel olarak desteklenen StreamLoad kullanarak veri yazar. Doris Writer, okuyucu tarafından okunan verileri bellekte önbelleğe alır, verileri metin olarak birleştirir ve ardından metni toplu işler halinde Doris veritabanına aktarır. Daha fazla bilgi için Doris resmi belgelerine bakın.

Veri senkronizasyonundan önce Doris ortamını hazırlayın

DataWorks'u kullanarak verileri bir Doris veri kaynağına senkronize etmeden önce bir Doris ortamı hazırlamanız gerekir. Bu sayede veri senkronizasyon görevi yapılandırılabilir ve veriler beklendiği gibi Doris veri kaynağına senkronize edilebilir. Aşağıdaki bilgiler, Doris veri kaynağına veri senkronizasyonu için Doris ortamının nasıl hazırlanacağını açıklamaktadır.

Doris sürümünü onaylayın

Data Integration'ın Doris sürümleri üzerinde gereksinimleri vardır. Veri senkronize etmek istediğiniz Doris kümesinin sürümünün gereksinimleri karşılayıp karşılamadığını Desteklenen Doris sürümleri bölümüne göre kontrol edebilirsiniz. Belirli bir sürümü Doris resmi web sitesinden indirip yükleyebilirsiniz.

Hesap oluşturun ve izinler verin

Sonraki işlemler için Doris veritabanında oturum açmak üzere kullanılan bir hesap oluşturmanız gerekir. Doris veritabanına sonraki bağlantılar için hesap için bir şifre belirtmeniz gerekir. Doris veritabanında oturum açmak için Doris'in varsayılan root kullanıcısını kullanmak istiyorsanız root kullanıcısı için bir şifre belirtmeniz gerekir. Varsayılan olarak root kullanıcısının şifresi yoktur. Doris'te bir SQL ifadesi çalıştırarak şifreyi belirtebilirsiniz:

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

Doris için ağ bağlantısını yapılandırın

Veri yazmak için StreamLoad yöntemini kullanmak üzere bir FE düğümünün özel IP adresine erişmeniz gerekir. FE düğümünün genel IP adresine erişirseniz bir BE düğümünün özel IP adresine yönlendirilirsiniz. Yönlendirme hakkında daha fazla bilgi için Veri işlemi sorunları konusuna bakın. Bu durumda, veri kaynağınız ile serverless kaynak grubu veya Data Integration için özel bir kaynak grubu arasında ağ bağlantıları kurmanız gerekir; böylece kaynak grubu veri kaynağına dahili ağ üzerinden erişebilir. Doris veritabanı ile bir kaynak grubu arasında ağ bağlantısının nasıl kurulacağı hakkında daha fazla bilgi için Ağ bağlantısı çözümleri konusuna bakın.

Veri kaynağı ekleme

DataWorks'ta bir senkronizasyon görevi geliştirmeden önce, Veri kaynağı yapılandırması bölümündeki talimatları izleyerek gerekli veri kaynağını DataWorks'a eklemeniz gerekir. Bir veri kaynağı eklerken parametrelerin anlamlarını anlamak için DataWorks konsolunda parametre açıklamalarını görüntüleyebilirsiniz.

Doris veri kaynağının aşağıdaki yapılandırma öğeleri için yapılandırma gereksinimlerini dikkate alın:

  • JdbcUrl: IP adresi, bağlantı noktası numarası, veritabanı ve bağlantı parametrelerini içeren JDBC bağlantı dizesini girin. Hem genel hem de özel IP adresleri desteklenir. Genel bir IP adresi kullanırsanız Data Integration kaynak grubunun Doris örneğinizin bulunduğu ana bilgisayara erişebildiğinden emin olun.

  • FE endpoint: FE düğümlerinin IP adreslerini ve bağlantı noktalarını girin. Kümenizde birden çok FE düğümü varsa virgülle ayrılmış birden çok uç nokta girebilirsiniz, örneğin ip1:port1,ip2:port2. Bağlantıyı test ettiğinizde DataWorks, belirtilen tüm FE endpoints için bağlantıyı test eder.

  • Username: Doris veritabanına erişmek için kullanıcı adını girin.

  • Password: Kullanıcı adına karşılık gelen şifreyi girin.

  • Advanced Parameters: Doris veri kaynağı, bağlantı yapılandırmasını genişleten birden çok gelişmiş parametreyi destekler. Örneğin, Java Database Connectivity (JDBC) sorgu zaman aşımını ayarlamak için gelişmiş parametrelere queryTimeout parametresini ekleyin. Değer saniye cinsindendir ve queryTimeout=600 zaman aşımını 600 saniye olarak ayarlar. Bu parametreyi ayarladıktan sonra otomatik olarak JDBC bağlantı dizesine eklenir. queryTimeout yalnızca veri kaynağı düzeyinde etkilidir. Bir toplu iş senkronizasyon düğümü için queryTimeout ayrı olarak yapılandırılamaz. Veri kaynağında merkezi olarak yapılandırın.

Veri senkronizasyon görevi geliştirin

Bir senkronizasyon görevini yapılandırmaya giriş noktası ve yordamı hakkında bilgi için aşağıdaki yapılandırma kılavuzlarına bakın.

Ek: Kod ve parametreler

Kod düzenleyiciyi kullanarak toplu iş senkronizasyon görevi yapılandırma

Toplu iş senkronizasyon görevini kod düzenleyiciyi kullanarak yapılandırmak istiyorsanız, betikteki ilgili parametreleri birleşik betik biçimi gereksinimlerine göre yapılandırmanız gerekir. Daha fazla bilgi için Betik modu yapılandırması konusuna bakın. Aşağıdaki bilgiler, kod düzenleyiciyi kullanarak toplu iş senkronizasyon görevi yapılandırırken veri kaynakları için yapılandırmanız gereken parametreleri açıklamaktadır.

Reader betik demosu

{
  "type": "job",
  "version": "2.0",// The version number. 
  "steps": [
    {
      "stepType": "doris",// The plug-in name. 
      "parameter": {
        "column": [// The names of the columns. 
          "id"
        ],
        "connection": [
          {
            "querySql": [
              "select a,b from join1 c join join2 d on c.id = d.id;"
            ],
            "datasource": ""// The name of the data source. 
          }
        ],
        "where": "",// The WHERE clause. 
        "splitPk": "",// The shard key. 
        "encoding": "UTF-8"// The encoding format. 
      },
      "name": "Reader",
      "category": "reader"
    },
    {
      "stepType": "stream",
      "parameter": {},
      "name": "Writer",
      "category": "writer"
    }
  ],
  "setting": {
    "errorLimit": {
      "record": "0"// The maximum number of dirty data records allowed. 
    },
    "speed": {
      "throttle": true,// Specifies whether to enable throttling. The value false indicates that throttling is disabled, and the value true indicates that throttling is enabled. The mbps parameter takes effect only when the throttle parameter is set to true. 
      "concurrent": 1,// The maximum number of parallel threads. 
      "mbps": "12"// The maximum transmission rate. Unit: MB/s. 
    }
  },
  "order": {
    "hops": [
      {
        "from": "Reader",
        "to": "Writer"
      }
    ]
  }
}

Reader betik parametreleri

Parametre

Açıklama

Gerekli

Varsayılan değer

datasource

Veri kaynağının adı. Eklenen veri kaynağının adıyla aynı olmalıdır. Kod düzenleyiciyi kullanarak veri kaynakları ekleyebilirsiniz.

Evet

Varsayılan değer yok

table

Veri okumak istediğiniz tablonun adı. Her senkronizasyon görevi yalnızca bir tablodan veri senkronize etmek için kullanılabilir.

Bölümlenmiş bir tablo için, veri okumak istediğiniz bölümleri belirtmek üzere table parametresini kullanabilirsiniz. Örnekler:

  • Bölümlenmiş veritabanlarından ve tablolardan veri okumak için bir aralık yapılandırabilirsiniz. Örneğin, 'table_[0-99]', verilerin 'table_0', 'table_1' ve 'table_2''den başlayarak 'table_99''e kadar okunduğunu belirtir.

  • Tablolarınız 'table_000', 'table_001' ve 'table_002''den başlayarak 'table_999''e kadar aynı uzunlukta sayısal son eklerine sahipse parametreyi '"table": ["table_00[0-9]", "table_0[10-99]", "table_[100-999]"]' olarak yapılandırabilirsiniz.

Not

Doris Reader, table parametresiyle belirtilen bölümlerde column parametresiyle belirtilen sütunlardan veri okur. Belirtilen bir bölüm veya sütun mevcut değilse senkronizasyon görevi başarısız olur.

Evet

Varsayılan değer yok

column

Senkronize etmek istediğiniz sütunlar. Sütunlar bir JSON dizisinde açıklanır. Varsayılan olarak tüm sütunlar senkronize edilir. Örneğin, ["*"] kullanın.

  • Sütun budama: Dışa aktarmak için bir sütun alt kümesi seçebilirsiniz.

  • Sütun sırası değiştirilebilir. Bu, sütunları kaynak tablonun şemasında belirtilen sıradan farklı bir sırada belirtebileceğiniz anlamına gelir.

  • Sabit yapılandırma: Doris SQL sözdizimini izlemeniz gerekir. Örnek: ["id","table","1","'mingya.wmy'","'null'","to_char(a+1)","2,3","true"].

    • id: bir sütun adı.

    • table: ayrılmış anahtar kelimeler içeren bir sütunun adı.

    • 1: bir tamsayı sabiti.

    • 'mingya.wmy': tek tırnak işaretleri (') içine alınmış bir dize sabiti.

    • null:

      • " " boş bir dizeyi gösterir.

      • null null bir değeri gösterir.

      • 'null' "null" dizesini gösterir.

    • to_char(a+1): bir dizenin uzunluğunu hesaplamak için kullanılan bir işlev ifadesi.

    • 2,3: bir kayan noktalı sabit.

    • true: bir Boole değeri.

  • column parametresi, veri okumak istediğiniz tüm sütunları açıkça belirtmelidir. Bu parametre boş bırakılamaz.

Evet

Varsayılan değer yok

splitPk

Okuma performansını artırmak için splitPk parametresini kullanarak bir parçalama anahtarı belirtebilirsiniz. Data Integration bu anahtarı kullanarak verileri böler ve eşzamanlı görevler çalıştırır.

  • splitPk parametresini tablonun birincil anahtar sütununun adına ayarlamanızı öneririz. Veriler, belirli parçalara yoğun bir şekilde dağıtılmak yerine birincil anahtar sütununa göre farklı parçalara eşit şekilde dağıtılabilir.

  • splitPk parametresi yalnızca tamsayı veri türlerindeki veriler için parçalamayı destekler. splitPk parametresini dize, kayan nokta veya tarih veri türü gibi desteklenmeyen bir veri türündeki bir alana ayarlarsanız bu parametrenin ayarı yoksayılır ve verileri okumak için tek bir iş parçacığı kullanılır.

  • splitPk parametresi sağlanmazsa veya boş bırakılırsa verileri okumak için tek bir iş parçacığı kullanılır.

Hayır

Varsayılan değer yok

where

Filtre koşulu. Pek çok iş senaryosunda yalnızca geçerli günün verilerini senkronize etmek isteyebilirsiniz. Bunu yapmak için where koşulunu gmt_create > $bizdate olarak belirtebilirsiniz.

  • Artımlı verileri okumak için WHERE yan tümcesini kullanabilirsiniz. where parametresi sağlanmazsa veya boş bırakılırsa Doris Reader tüm verileri okur.

  • where parametresini limit 10 olarak ayarlamayın. Bu değer, Doris'in SQL WHERE yan tümcesine ilişkin kısıtlamalarına uymaz.

Hayır

Varsayılan değer yok

querySql (gelişmiş parametre, yalnızca kod düzenleyicide kullanılabilir)

Bazı iş senaryolarında where parametresi istenen filtre koşullarını tanımlamak için yeterli olmayabilir. Filtreleme için özel bir SQL sorgusu belirtmek üzere bu parametreyi kullanabilirsiniz. Bu parametreyi yapılandırırsanız Data Integration table, column, where ve splitPk parametrelerini yoksayar ve verileri almak için özel sorguyu kullanır. Örneğin, senkronizasyondan önce birden çok tabloyu birleştirmek için select a,b from table_a join table_b on table_a.id = table_b.id gibi bir sorgu kullanabilirsiniz. querySql parametresi table, column, where ve splitPk parametrelerinden daha yüksek önceliğe sahiptir. Sistemin kullanıcı adı ve şifre gibi bağlantı ayrıntılarını alabilmesi için datasource parametresi hala gereklidir.

Not

querySql parametresinin adı büyük/küçük harfe duyarlıdır. Örneğin, querysql etkili olmaz.

Hayır

Varsayılan değer yok

Writer betik demosu

{
  "stepType": "doris",// The plug-in name. 
  "parameter":
  {
    "postSql":// The SQL statement that you want to execute after the synchronization task is run. 
    [],
    "preSql":
    [],// The SQL statement that you want to execute before the synchronization task is run. 
    "datasource":"doris_datasource",// The name of the data source. 
    "table": "doris_table_name",// The name of the table. 
    "column":
    [
      "id",
      "table_id",
      "table_no",
      "table_name",
      "table_status"
    ],
    "loadProps":{
      "column_separator": "\\x01",// The column delimiter of data in the CSV format.
      "line_delimiter": "\\x02"// The row delimiter of data in the CSV format.
    }
  },
  "name": "Writer",
  "category": "writer"
}

Writer betik parametreleri

Parametre

Açıklama

Gerekli

Varsayılan değer

datasource

Veri kaynağının adı. Eklenen veri kaynağının adıyla aynı olmalıdır. Kod düzenleyiciyi kullanarak veri kaynakları ekleyebilirsiniz.

Evet

Varsayılan değer yok

table

Veri okumak istediğiniz tablonun adı.

Evet

Varsayılan değer yok

column

Veri yazılacak hedef sütunlar. Sütun adlarını bir dizide belirtin, örneğin "column":["id","name","age"]. Tüm sütunlara sırayla veri yazmak için dizide bir yıldız işareti () kullanın, örneğin "column":[""].

Evet

Varsayılan değer yok

preSql

Veri senkronizasyon görevi başlamadan önce yürütülecek SQL ifadeleri. Kodsuz UI'da yalnızca bir SQL ifadesi yürütebilirsiniz. Kod düzenleyicide birden çok SQL ifadesi yürütebilirsiniz. Örneğin, bu ifadeleri kullanarak tablodaki mevcut verileri temizleyebilirsiniz.

Hayır

Varsayılan değer yok

postSql

Senkronizasyon görevi çalıştırıldıktan sonra yürütmek istediğiniz SQL ifadesi. Örneğin, bu parametreyi zaman damgası eklemek için kullanılan SQL ifadesine ayarlayabilirsiniz. Kodsuz UI'da yalnızca bir SQL ifadesi ve kod düzenleyicide birden çok SQL ifadesi yürütebilirsiniz.

Hayır

Varsayılan değer yok

maxBatchRows

Hedef tabloya tek seferde yazabileceğiniz maksimum satır sayısı. Bu parametre ve batchSize parametresi birlikte hedef tabloya tek seferde yazabileceğiniz veri kaydı sayısını belirler. Önbelleğe alınan veriler bu parametrelerden herhangi birinin değerine her ulaştığında writer verileri hedef tabloya yazmaya başlar.

Hayır

500000

batchSize

Hedef tabloya tek seferde yazabileceğiniz maksimum veri miktarı. Bu parametre ve maxBatchRows parametresi birlikte hedef tabloya tek seferde yazabileceğiniz veri kaydı sayısını belirler. Önbelleğe alınan veriler bu parametrelerden herhangi birinin değerine her ulaştığında writer verileri hedef tabloya yazmaya başlar.

Hayır

104857600

maxRetries

Birden çok veri kaydını hedef tabloya tek seferde yazamadığınızda izin verilen maksimum yeniden deneme sayısı.

Hayır

3

labelPrefix

Yüklenen her dosya partisi için etiket ön eki. Nihai etiket, her aktarmanın yinelenebilir olmasını sağlamak ve veri çoğaltmasını önlemek amacıyla labelPrefix + UUID kombinasyonudur.

Hayır

datax_doris_writer_

loadProps

StreamLoad için istek parametreleri; başlıca olarak aktarma veri biçimini yapılandırmak için kullanılır. Varsayılan olarak veriler CSV biçiminde aktarılır. loadProps parametresi yapılandırılmazsa varsayılan CSV biçimi kullanılır; sütun sınırlayıcısı olarak \t ve satır sınırlayıcısı olarak \n kullanılır. Varsayılan yapılandırma aşağıdaki gibidir:

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

Verileri JSON biçiminde yazmak istiyorsanız aşağıdaki ayarları kullanın:

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

Hayır

Varsayılan değer yok

Toplama türlerinde veri yazma

Doris Writer kullanarak toplama türlerinde veri yazabilirsiniz ancak kod düzenleyicide ek yapılandırmalar yapmanız gerekir.

Örneğin, aşağıdaki Doris tablosunda uuid bitmap türündedir (toplama türü) ve sex HLL türündedir (toplama türü).

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, -- Aggregation type
  `sex` HLL HLL_UNION  -- Aggregation type
) ENGINE=OLAP AGGREGATE KEY(`user_id`, `date`, `city`)
COMMENT 'OLAP' DISTRIBUTED BY HASH(`user_id`) BUCKETS 32

Senkronize edilecek ham veriler aşağıda gösterildiği gibi beş sütundan oluşur. uuid ve sex sütunlarının değerleri bitmap veya HLL türü değerleri yerine ham değerlerdir (normal sayılar ve dizeler):

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'

Ham değerler doğrudan bitmap veya HLL sütunlarına yazılamaz. Değerlerin toplama işlevleri kullanılarak dönüştürülmesi gerekir. Doris Stream Load'un columns parametresi dönüşümü tamamlayabilir. Eşleme kuralı şu şekildedir: dosyadaki sütunlar, columns içinde eşit işareti (=) içermeyen sütun adlarına sırayla eşlenir ve eşit işareti (=) içeren girdiler ifade dönüşümleridir (hedef sütunların değerleri ifadelerden hesaplanır) ve dosya sütunu konumlarını kaplamaz.

Bu nedenle, bu örnekteki dosya sütunları ile tablo sütunları arasındaki eşlemeler aşağıdaki gibidir:

  • Dosyadaki 1 ila 3. sütunlar (user_id, date ve city): aynı adlı tablo sütunlarına doğrudan yazılır.

  • Dosyadaki 4. sütun (uuid ham değeri): geçici yer tutucu sütun k1 atanır, uuid=bitmap_hash(k1) ifadesiyle bitmap'e dönüştürülür ve uuid tablo sütununa yazılır.

  • Dosyadaki 5. sütun (sex ham değeri): geçici yer tutucu sütun k2 atanır, sex=hll_hash(k2) ifadesiyle bir HLL değerine dönüştürülür ve sex tablo sütununa yazılır.

k1 ve k2 tabloya yazılmayan geçici yer tutucu adlardır. İfadelerde başvurulan adlar yer tutucu sütunların adlarıyla tutarlı olduğu sürece adları başka adlarla değiştirebilirsiniz.

Doris Writer kullanarak toplama türlerinde veri yazarken writer.parameter.column içinde yazılacak sütunları belirtmeniz ve yukarıdaki dönüşüm kurallarını writer.parameter.loadProps.columns içinde yapılandırmanız gerekir. writer.parameter.column içindeki uuid ve sex senkronizasyon kayıtlarındaki ham değer alanlarının adlarıdır. Yalnızca yazılacak alanları ve yazma sırasını belirlerler. Bir CSV dosyası sütun adları içermez ve Stream Load sütunları konuma göre tanımlar. Bu nedenle, columns parametresindeki dördüncü ve beşinci sütunlar için özel adlar kullanabilirsiniz (bu örnekte k1 ve k2).

Örnek kod:

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