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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
queryTimeoutparametresini ekleyin. Değer saniye cinsindendir vequeryTimeout=600zaman aşımını 600 saniye olarak ayarlar. Bu parametreyi ayarladıktan sonra otomatik olarak JDBC bağlantı dizesine eklenir.queryTimeoutyalnızca veri kaynağı düzeyinde etkilidir. Bir toplu iş senkronizasyon düğümü içinqueryTimeoutayrı 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.
Yapılandırma yordamı hakkında daha fazla bilgi için Kodsuz UI kullanarak toplu iş senkronizasyon görevi yapılandırma ve Kod düzenleyiciyi kullanarak toplu iş senkronizasyon görevi yapılandırma konularına bakın.
Toplu iş senkronizasyon görevini yapılandırmak için kod düzenleyiciyi kullandığınızda yapılandırılan tüm parametreler ve çalıştırılan kod hakkında bilgi için Ek: Kod ve parametreler konusuna 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:
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,
|
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.
|
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
|
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 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 |
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 |
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
Verileri JSON biçiminde yazmak istiyorsanız aşağıdaki ayarları kullanın:
|
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"
}