Bu konu, Databricks verilerinin DataWorks ile eşitlenmesine yönelik yetenekleri ve desteklenen işlevleri açıklar.
Kullanım notları
-
Sınırlamalar
Kaynak grubu: Databricks Reader yalnızca Serverless kaynak gruplarını destekler. Kaynak grubuna bağlı VPC için Internet NAT ağ geçidi ve bir EIP yapılandırın.
Okuma modu: Veri eşitleme yalnızca
JDBCüzerinden okumayı destekler.-
Katalog türü ve özellik sınırlamaları: Veri kaynağı bağlantısını test etmek veya sihirbaz modunda bir eşitleme görevi yapılandırmak için DataWorks, Databricks REST API'yi çağırmak üzere
databricks-sdkkullanır; bu işlem yalnızca Unity Catalog'u destekler.hive_metastoregibi kataloğunuz Unity Catalog değilse bu özellikler kullanılamaz. Aşağıdaki seçeneklerden birini seçin:Seçenek 1 (önerilen): Unity Catalog'a geçiş yapın. DataWorks'ün tüm özelliklerini kullanmak için verilerinizi ve meta verilerinizi Unity Catalog'a taşımanızı Databricks önerir. Talimatlar için bkz. Unity Catalog'a geçiş.
Seçenek 2: Doğrudan komut dosyası modunu kullanın. DataWorks'te veri kaynağını yapılandırdıktan sonra Test Connectivity adımını atlayın ve eşitleme görevini geliştirmek için komut dosyası modunu kullanın.
-
Eşzamanlı okumalar ve veri tutarlılığı
Databricks Reader, daha hızlı eşitleme sağlamak için verileri bölmek ve eşzamanlı görevler başlatmak amacıyla
splitPkparametresini kullanır. Şu hususlara dikkat edin:Eşzamanlı görevler aynı veritabanı işlemine dahil değildir ve tam olarak aynı anda başlamaz.
Veri kaynağı hala yazma işlemi alıyorsa eşzamanlı okumalar eksik veya tutarsız bir anlık görüntü üretebilir.
Çözüm yolları: Teknik sınırlamalar nedeniyle birden çok iş parçacığı arasında mükemmel derecede tutarlı bir anlık görüntü elde edilemez. İş yükünüze göre aşağıdaki yaklaşımlardan birini seçin:
Seçenek 1: Veri bölme (
splitPk) olmadan tek iş parçacıklı eşitleme kullanın. Bu yöntem kesin tutarlılık sağlar ancak daha yavaştır.Seçenek 2: Eşitleme sırasında veri kaynağını statik tutun; örneğin tabloyu kilitleyerek, uygulama yazma işlemlerini geçici olarak devre dışı bırakarak veya çoğaltma eşitlemesini duraklatarak. Bu yöntem daha hızlıdır ancak üretim trafiğini etkileyebilir.
-
Kodlama
Databricks Reader verileri JDBC ile çıkarır; JDBC, veritabanları arasındaki kodlamaları otomatik olarak algılar ve dönüştürür. Kodlamayı manuel olarak yapılandırmanız gerekmez.
-
Artımlı eşitleme
Databricks Reader, bir
SELECT ... WHERE ...deyimi çalıştırarak verileri çıkarır. Artımlı eşitleme,WHEREkoşulunun oluşturulmasına bağlıdır.-
Önerilen yaklaşım (zaman damgası alanı):
Kaynak tabloya
modify_timegibi bir zaman damgası alanı ekleyin.Uygulama bir kayıt eklediğinde veya güncellediğinde (mantıksal silme dahil) zaman damgası alanını da güncelleyin.
Son eşitleme noktasından sonraki değişiklikleri getirmek için görevin
WHEREkoşulunda zaman damgası alanını kullanın.
Desteklenmeyen durum: İş tablosunda, zaman damgası veya otomatik artan ID gibi eklenen veya güncellenen kayıtları ayırt eden bir alan yoksa Databricks Reader artımlı eşitleme yapamaz ve tam eşitleme gerçekleştirmesi gerekir.
-
Desteklenen alan türleri
Çevrimdışı okumalar için Databricks Reader çoğu Databricks türünü destekler ancak bazı türler desteklenmez. Alan türlerinizi kontrol edin.
Aşağıdaki tabloda Databricks Reader tarafından desteklenen tür dönüşümleri listelenmiştir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Veri kaynağı oluşturma
Bir veri eşitleme görevi geliştirmeden önce DataWorks'te ilgili veri kaynağını oluşturun. Prosedür için bkz. Veri kaynağı yapılandırması. Yapılandırma parametrelerine ilişkin açıklamalar yapılandırma arayüzünde mevcuttur.
Veri eşitleme görevi geliştirme
Bir eşitleme görevini yapılandırmaya yönelik giriş noktaları ve yaygın adımlar için aşağıdaki kılavuzlara bakın.
Tek tablo çevrimdışı eşitleme yapılandırma kılavuzu
Prosedür için bkz. Sihirbaz modunda çevrimdışı eşitleme görevi yapılandırma ve Komut dosyası modunda çevrimdışı eşitleme görevi yapılandırma.
Tüm komut dosyası modu parametreleri ve örnek bir komut dosyası için bkz. Ek: Örnek komut dosyası ve parametre açıklamaları.
SSS
-
S: Okuma işlemi
[Databricks][JDBCDriver](500313)Error getting the data value from result set: Column13:[Databricks][JDBCDriver](500312)Error in fetching data rows: Timestamp Conversion has failed. hatasıyla başarısız oluyor.C: Databricks TIMESTAMP değerleri Java Timestamp tarafından desteklenen aralığın dışında kalabilir ve bu durum JDBC sürücüsü hatasına neden olur.
columnyapılandırmasını değiştirin; örneğin"column": ["CAST(col_timestamp AS STRING)"]şeklinde ayarlayın.
Ek: Örnek komut dosyası ve parametre açıklamaları
Çevrimdışı görev komut dosyası yapılandırması
Çevrimdışı bir görev için komut dosyası modunu kullanıyorsanız gerekli parametreleri standart komut dosyası formatında yazın. Ayrıntılar için bkz. Komut dosyası modunda çevrimdışı eşitleme görevi yapılandırma. Aşağıda komut dosyası modundaki veri kaynağı parametreleri açıklanmaktadır.
Örnek Reader komut dosyası
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "databricks",
"parameter": {
"datasource": "databricks",
"schema": "schema1",
"table": "table1",
"readMode": "jdbc",
"where": "id>1",
"splitPk": "id",
"column": [
"c1",
"c2"
]
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"concurrent": 1
}
}
}
Reader komut dosyası parametreleri
Parametre | Açıklama | Zorunlu | Varsayılan değer |
datasource | Veri kaynağı adı. Komut dosyası modu veri kaynakları eklemeyi destekler; bu değer, eklenen veri kaynağının adıyla eşleşmelidir. | Evet | Yok |
column | Yapılandırılan tablodan eşitlenecek sütun adlarının JSON dizisi olarak ifade edilen listesi.
Örneğin:
column içinde boş olmayan bir sütun kümesini açıkça belirtmeniz gerekir. | Evet | Yok |
splitPk |
| Hayır | Yok |
where | Filtre koşulu. Databricks Reader bunu belirtilen | Hayır | Yok |
schema | Eşitlenecek verileri içeren şema. | Evet | Yok |
table | Eşitlenecek seçili tablo. Her görev bir tabloyu destekler. | Evet | Yok |
readMode | Okuma modu. Şu anda yalnızca JDBC desteklenmektedir. | Hayır | jdbc |