MaxCompute veri kaynağı, MaxCompute içine ve dışına veri okuma ve yazma işlemleri için çift yönlü bir kanal sağlayan bir veri hub'ıdır.
Özellikler
DataWorks'teki MaxCompute veri kaynağı, bir MaxCompute projesinin tünel hizmetine erişmek için bir tünel uç noktası kullanır. Bu sayede verileri projeye yükleyerek veya projeden indirerek senkronize edebilirsiniz. Tünel hizmeti üzerinden yapılan yükleme ve indirme işlemleri DownloadTable işlemiyle gerçekleşir.
11 Aralık 2023 tarihinden sonra oluşturulan MaxCompute veri kaynakları için DataWorks hizmeti ve hedef MaxCompute projesi farklı bölgelerde bulunuyorsa tünel uç noktasını kullanarak doğrudan veri senkronizasyonu yapamazsınız. Önce bir Cloud Enterprise Network (CEN) örneği satın alarak ağ bağlantısı kurmanız gerekir. Bağlantı kurulduktan sonra çapraz bölge veri senkronizasyonu mümkündür. CEN ve ilgili işlemler hakkında daha fazla bilgi için bkz. Cloud Enterprise Network (CEN).
Toplu okuma
MaxCompute Reader, bölümlenmiş ve bölümlenmemiş tablolardan veri okumayı destekler; ancak sanal görünümlerden veya harici tablolardan okumayı desteklemez.
Bir MaxCompute bölümlenmiş tablodan toplu okuma yaptığınızda bölüm anahtarı sütunları için alan eşlemeyi doğrudan yapılandıramazsınız. Bölüm anahtarı değerlerini senkronize etmek üzere özel bir alan ekleyebilir, bölüm adını manuel olarak girebilir ve ardından alan eşlemeyi yapılandırabilirsiniz.
-
Zamanlama parametrelerini kullanarak bölüm değerlerini belirtebilir ve otomatik değiştirmeyi etkinleştirebilirsiniz; böylece zamanlama saatine göre ilgili bölümdeki veriler senkronize edilir.
Örneğin id ve name sütunlarını içeren t0 adlı bir bölümlenmiş tablo bulunmaktadır. Birinci düzey bölüm anahtarı pt, ikinci düzey bölüm anahtarı ise ds'dir. pt=<iş tarihi> ve ds=hangzhou olan bölümden veri okumak için kaynağı yapılandırırken bölüm değerlerini pt=${zamanlama parametresi} ve ds=hangzhou olarak belirtmeniz gerekir. Ardından id ve name sütunları için sütun eşlemesini yapılandırabilirsiniz.
Bölüm anahtarı sütunlarını özel alanlar olarak ekleyerek bunları bir hedef tabloya yazabilirsiniz.
MaxCompute Reader, WHERE yan tümcesini kullanarak veri filtrelemeyi destekler.
Toplu yazma
Kaynak veriler null değerler içeriyorsa MaxCompute Writer VARCHAR veri türünü desteklemez.
Hedef tablo bir
DeltaTableise Advanced Configuration öğesini genişletin ve Visible After Synchronization ayarını Yes olarak ayarlayın. Aksi takdirde eşzamanlılık 1'den büyük olduğunda görev hata bildirir.Verilerin bir kaynaktan MaxCompute harici tablosuna senkronize edilmesi desteklenmez.
Hedef tablodaki bir sütun kaynak bir sütunla eşlenmemişse Data Integration, tablo oluşturulurken varsayılan bir değer belirtilmiş olsa bile senkronizasyon sonrası bu sütunun değerini null olarak ayarlar.
MaxCompute Writer, içe aktarma öncesi SQL deyimlerini (
preSql) veya içe aktarma sonrası SQL deyimlerini (postSql) desteklemez. Veriler yazılmadan önce veya sonra hedef tabloda SQL işlemleri yapmanız gerekiyorsa (örneğin artımlı yazma için kısmi verileri kaldırmak amacıyla DELETE deyimleri çalıştırmak gibi) gerekli ön işleme veya son işleme işlemlerini yapmak üzere veri senkronizasyon görevinin üst veya alt akışında bir SQL düğümü yapılandırın.
Gerçek zamanlı yazma
Gerçek zamanlı senkronizasyon görevleri sunucusuz kaynak gruplarını destekler.
Gerçek zamanlı senkronizasyon görevleri birincil anahtarı olmayan tabloların senkronize edilmesini desteklemez.
Verilerin bir kaynaktan MaxCompute harici tablosuna senkronize edilmesi desteklenmez.
Varsayılan MaxCompute veri kaynağına (genellikle
odps_first) gerçek zamanlı senkronizasyon yaptığınızda varsayılan olarak geçici bir AccessKey çifti kullanılır. Geçici AccessKey çifti 7 gün sonra süresi dolduğu için görev başarısız olur. Platform, hatanın süresi dolmuş geçici bir AccessKey çiftinden kaynaklandığını algıladığında görevi otomatik olarak yeniden başlatır. Bu tür uyarılar için izleme kuralları yapılandırdıysanız bir uyarı bildirimi alırsınız.MaxCompute'a tek tıkla gerçek zamanlı senkronizasyon görevleri için yapılandırma gününde yalnızca geçmiş tam veriler sorgulanabilir. Artımlı veriler ancak bir sonraki gün birleştirme tamamlandıktan sonra MaxCompute'ta sorgulanabilir.
MaxCompute'a tek tıkla gerçek zamanlı senkronizasyon görevleri her gün tam bir bölüm oluşturur. Aşırı depolama kullanımını önlemek amacıyla bu görevler tarafından otomatik olarak oluşturulan MaxCompute tablolarının varsayılan yaşam döngüsü 30 gündür. Bu durum iş gereksinimlerinizi karşılamıyorsa senkronizasyon görevini yapılandırırken ilgili MaxCompute tablo adına tıklayarak yaşam döngüsünü değiştirebilirsiniz.
Data Integration, verileri yüklemek ve indirmek için MaxCompute motoru senkronizasyon veri kanalını kullanır. Senkronizasyon veri kanalının SLA ayrıntıları için bkz. MaxCompute Tunnel'a genel bakış. MaxCompute motoru senkronizasyon veri kanalının SLA'sına dayanarak veri senkronizasyonu teknoloji seçimlerinizi değerlendirin.
Örnek modunda MaxCompute'a tek tıkla gerçek zamanlı senkronizasyon için Data Integration'a yönelik özel kaynak grubunun minimum teknik özellikleri 8C16G olmalıdır.
Yalnızca geçerli çalışma alanıyla aynı bölgede bulunan özel MaxCompute veri kaynakları desteklenir. Çapraz bölge MaxCompute projeleri bağlantı testini geçebilir ancak görev yürütme sırasında MaxCompute'ta tablo oluşturma aşamasında motorun mevcut olmadığına ilişkin bir hata bildirilir.
-
MaxCompute tam veritabanı senkronizasyonu için hedef olarak kullanıldığında tablo türü normal tablo ise yalnızca MaxCompute'a tek tıkla gerçek zamanlı senkronizasyon ve tam veritabanı gerçek zamanlı senkronizasyonu için artımlı akış modu desteklenir. Tablo türü Delta Table ise hem tam veritabanı gerçek zamanlı senkronizasyonu hem de MaxCompute'a tek tıkla gerçek zamanlı senkronizasyon desteklenir.
NotÖzel bir MaxCompute veri kaynağı kullandığınızda DataWorks projesinin yine de bir MaxCompute motoruyla ilişkilendirilmesi gerekir. Aksi takdirde MaxCompute SQL düğümleri oluşturamazsınız; bu da tam senkronizasyon için done-flag düğümünün oluşturulmasının başarısız olmasına neden olur.
Desteklenen sütun türleri
MaxCompute 1,0 veri türleri, 2,0 veri türleri ve Hive uyumlu veri türleri desteklenir. Aşağıdaki bölümlerde her veri türü sürümü tarafından desteklenen sütun türleri açıklanmaktadır.
1.0 veri türleri tarafından desteklenen sütunlar
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.0 veri türleri ve Hive uyumlu veri türleri tarafından desteklenen sütunlar
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Veri türü dönüştürme
Aşağıdaki tabloda MaxCompute Reader'ın desteklediği veri türü dönüşümleri açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Bir veri dönüşümü başarısız olursa veya veriler hedef veri kaynağına yazılamazsa veriler kirli veri olarak kabul edilir. Bunu kirli veri eşiği ile birlikte kullanabilirsiniz.
Veri senkronizasyonu öncesi hazırlıklar
Bir MaxCompute tablosundan veri okumadan veya tabloya veri yazmadan önce gerektiğinde ilgili özellikleri etkinleştirebilirsiniz.
MaxCompute'e bağlanma ve proje düzeyi ayarları etkinleştirme
MaxCompute istemcisinde oturum açın. Daha fazla bilgi için bkz. MaxCompute istemcisi.
MaxCompute proje düzeyi ayarlarını etkinleştirin: Gerekli izinlere sahip olduğunuzdan emin olun. İlgili işlemleri yapmak için Project Owner hesabı kullanabilirsiniz. MaxCompute izinleri hakkında daha fazla bilgi için bkz. MaxCompute izinleri.
ACID özelliğini etkinleştirme
ACID özelliğini etkinleştirmek için istemcide aşağıdaki komutu çalıştırmak üzere Project Owner hesabı kullanabilirsiniz. MaxCompute'taki ACID semantiği hakkında daha fazla bilgi için bkz. ACID semantiği.
setproject odps.sql.acid.table.enable=true;
(İsteğe bağlı) 2.0 veri türlerini etkinleştirme
MaxCompute 2,0 veri türlerinde TIMESTAMP türünü kullanmanız gerekiyorsa 2,0 veri türlerini etkinleştirmek için istemcide aşağıdaki komutu çalıştırmak üzere Project Owner hesabı kullanabilirsiniz.
setproject odps.sql.type.system.odps2=true;
(İsteğe bağlı) Hesaplara erişim izni verme
Bir MaxCompute hesap kaynağını bir çalışma alanıyla ilişkilendirdiğinizde DataWorks'te varsayılan olarak bir MaxCompute veri kaynağı oluşturulur. Bu veri kaynağını geçerli çalışma alanında veri senkronizasyonu için kullanabilirsiniz. Bu MaxCompute veri kaynağından başka bir çalışma alanında veri senkronize etmek istiyorsanız diğer çalışma alanındaki veri kaynağı için belirtilen erişim hesabının MaxCompute projesine erişmek için gerekli izinlere sahip olduğundan emin olun. Çapraz hesap yetkilendirmesi için bkz. Çapraz hesap yetkilendirmesi.
MaxCompute veri kaynağı oluşturma
Bir veri senkronizasyon görevi geliştirmeden önce MaxCompute projesini DataWorks'te MaxCompute veri kaynağı olarak oluşturmanız gerekir. Daha fazla bilgi için bkz. MaxCompute veri kaynağı oluşturma.
Standart moddaki çalışma alanları veri kaynağı yalıtımını destekler. Geliştirme ortamı ve üretim ortamı için veri kaynaklarını ayrı ayrı ekleyip yalıtarak verilerinizi koruyabilirsiniz. Daha fazla bilgi için bkz. Veri kaynağı yalıtımı yapılandırma.
-
Bir çalışma alanındaki odps_first adlı MaxCompute veri kaynağı veri kaynağı sayfasında manuel olarak oluşturulmadıysa bu veri kaynağı veri kaynağı yükseltmesinden önce çalışma alanıyla ilişkilendirilen ilk MaxCompute motoru için otomatik olarak oluşturulan bir veri kaynağıdır. Bu veri kaynağını kullanarak veri senkronizasyonu yaptığınızda veriler ilgili MaxCompute motor projesinden okunur veya buraya yazılır.
Veri kaynağı yapılandırma sayfasında veri kaynağının kullandığı MaxCompute proje adını görüntüleyerek verilerin nihai olarak hangi MaxCompute projesinden okunduğunu veya yazıldığını doğrulayabilirsiniz. Daha fazla bilgi için bkz. Veri kaynağı ayrıntılarını görüntüleme.
Veri senkronizasyon görevleri geliştirme
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.
Tek tablo toplu senkronizasyon görevi yapılandırma
Yordam için bkz. Sihirbaz modunda toplu senkronizasyon görevi yapılandırma ve Betik modunda toplu senkronizasyon görevi yapılandırma.
Beti̇k modu için parametrelerin tam listesi ve betik örnekleri için bkz. Ek: Betik örnekleri ve parametre açıklamaları.
Tek tablo gerçek zamanlı senkronizasyon görevi yapılandırma
Yordam için bkz. Tek tablo gerçek zamanlı senkronizasyon görevi yapılandırma.
Tam veritabanı senkronizasyon görevi yapılandırma
Yordam için bkz. Tam veritabanından toplu modda veri senkronize etme, Tam veritabanından gerçek zamanlı modda veri senkronize etme ve MaxCompute'a tek tıkla gerçek zamanlı senkronizasyon.
SSS
MaxCompute (ODPS) tablo verilerini okurken sütun eşlemede satır veya sütun ekleme notları
MaxCompute (ODPS) tablo verilerini okurken bölüm sütunları nasıl senkronize edilir?
MaxCompute (ODPS) tablo verilerini okurken birden çok bölümden veri nasıl senkronize edilir?
MaxCompute için sütun filtreleme, yeniden sıralama ve null doldurma nasıl uygulanır
Data Integration ile ilgili daha sık sorulan sorular için bkz. Data Integration SSS.
Ek: Betik örnekleri ve parametre açıklamaları
Kod düzenleyiciyi kullanarak toplu senkronizasyon görevi yapılandırma
Kod düzenleyiciyi kullanarak bir toplu senkronizasyon görevi yapılandırmak istiyorsanız birleşik betik formatı gereksinimlerine göre betikteki ilgili parametreleri yapılandırmanız gerekir. Daha fazla bilgi için bkz. Betik modu yapılandırması. Aşağıdaki bilgiler kod düzenleyiciyi kullanarak bir toplu senkronizasyon görevi yapılandırırken veri kaynakları için yapılandırmanız gereken parametreleri açıklamaktadır.
Reader betik örneği
Çalıştırmadan önce aşağıdaki koddaki yorumları kaldırın.
{
"type":"job",
"version":"2.0",
"steps":[
{
"stepType":"odps",//The plug-in name.
"parameter":{
"partition":[],//The partition from which data is read.
"isCompress":false,//Specifies whether to compress data.
"datasource":"",//The data source.
"column":[//The column information of the source table.
"id"
],
"where": "",//The specific WHERE clause content when data filtering by using WHERE is enabled.
"enableWhere":false,//Specifies whether to enable data filtering by using WHERE.
"table":""//The table name.
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"//The error count.
},
"speed":{
"throttle":true,//If throttle is set to false, the mbps parameter does not take effect and throttling is disabled. If throttle is set to true, throttling is enabled.
"concurrent":1, //The concurrency.
"mbps":"12"//The throttling rate. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
MaxCompute için Tunnel Endpoint belirtmek istiyorsanız betik modunda veri kaynağını manuel olarak yapılandırabilirsiniz. Yukarıdaki örnekteki "datasource":"", ifadesini veri kaynağının belirli parametreleriyle değiştirin. Örnek:
"accessId":"*******************",
"accessKey":"*******************",
"endpoint":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api",
"odpsServer":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api",
"tunnelServer":"http://dt.eu-central-1.maxcompute.aliyun.com",
"project":"*****",
Reader betik parametreleri
|
Parametre |
Açıklama |
Gerekli |
Varsayılan değer |
|
datasource |
Veri kaynağının adı. Betik modu veri kaynağı eklemenize olanak tanır. Bu parametrenin değeri eklediğiniz veri kaynağının adıyla aynı olmalıdır. |
Evet |
Yok |
|
table |
Verilerin okunduğu tablonun adı. Ad büyük/küçük harfe duyarlı değildir. |
Evet |
Yok |
|
partition |
Okunacak verilerin bölüm bilgisi.
Örneğin test adlı bir bölümlenmiş tabloda aşağıdaki dört bölüm bulunur: pt=1,ds=hangzhou, pt=1,ds=shanghai, pt=2,ds=hangzhou ve pt=2,ds=beijing. Farklı bölümlerden veri okumak için aşağıdaki ayarları yapılandırabilirsiniz:
Ayrıca ihtiyaçlarınıza göre bölüm verilerini almak için koşullar belirtebilirsiniz:
Not
|
Tablo bölümlenmiş bir tabloysa gereklidir. Tablo bölümlenmemiş bir tabloysa belirtilmemelidir. |
Yok |
|
column |
MaxCompute kaynak tablosunun sütun bilgisi. Örneğin test tablosunda id, name ve age sütunları varsa:
|
Evet |
Yok |
|
enableWhere |
Veri filtreleme için WHERE yan tümcesinin kullanılıp kullanılmayacağını belirtir. |
Hayır |
false |
|
where |
WHERE kullanılarak veri filtreleme etkinleştirildiğinde belirli WHERE yan tümcesi içeriği. |
Hayır |
Yok |
Writer betik örneği
Aşağıda bir betik yapılandırma örneği verilmiştir.
{ "type":"job", "version":"2.0",//The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"odps",//The plug-in name. "parameter":{ "partition":"",//The partition information. "truncate":true,//The cleanup rule. "isCompress":false,//Specifies whether to compress data. "datasource":"odps_first",//The data source name. "column": [//The source column names. "id", "name", "age", "sex", "salary", "interest" ], "table":""//The table name. }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"//The error count, which specifies the maximum number of tolerable dirty data records. }, "speed":{ "throttle":true,//If throttle is set to false, the mbps parameter does not take effect and throttling is disabled. If throttle is set to true, throttling is enabled. "concurrent":1, //The concurrency. "mbps":"12"//The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
MaxCompute için Tunnel Endpoint belirtmek istiyorsanız betik modunda veri kaynağını manuel olarak yapılandırabilirsiniz. Yukarıdaki örnekteki "datasource":"", ifadesini veri kaynağının belirli parametreleriyle değiştirin. Örnek:
{
"type":"job",
"version":"2.0",//The version number.
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"odps",//The plug-in name.
"parameter":{
"partition":"",//The partition information.
"truncate":true,//The cleanup rule.
"isCompress":false,//Specifies whether to compress data.
"datasource":"odps_first",//The data source name.
"column": [//The source column names.
"id",
"name",
"age",
"sex",
"salary",
"interest"
],
"table":""//The table name.
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"//The error count, which specifies the maximum number of tolerable dirty data records.
},
"speed":{
"throttle":true,//If throttle is set to false, the mbps parameter does not take effect and throttling is disabled. If throttle is set to true, throttling is enabled.
"concurrent":1, //The concurrency.
"mbps":"12"//The throttling rate. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
"accessId":"<yourAccessKeyId>",
"accessKey":"<yourAccessKeySecret>",
"endpoint":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api",
"odpsServer":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api",
"tunnelServer":"http://dt.eu-central-1.maxcompute.aliyun.com",
"project":"**********",
Writer betik parametreleri
|
Parametre |
Açıklama |
Gerekli |
Varsayılan değer |
|
datasource |
Veri kaynağının adı. Betik modu veri kaynağı eklemenize olanak tanır. Bu parametrenin değeri eklediğiniz veri kaynağının adıyla aynı olmalıdır. |
Evet |
Yok |
|
table |
Verilerin yazıldığı tablonun adı. Ad büyük/küçük harfe duyarlı değildir. Birden çok tablo belirtemezsiniz. |
Evet |
Yok |
|
partition |
Verilerin yazıldığı tablonun bölüm bilgisi. Bölümü en alt düzeye kadar belirtmeniz gerekir. Örneğin üç düzeyli bölümlere sahip bir tabloya veri yazmak için en alt düzey bölümü belirtmeniz gerekir örneğin
|
Tablo bölümlenmiş bir tabloysa gereklidir. Tablo bölümlenmemiş bir tabloysa belirtilmemelidir. |
Yok |
|
column |
İçe aktarılacak sütunların listesi. Tüm sütunları içe aktarmak için
|
Evet |
Yok |
|
truncate |
Veri temizleme işlemi için MaxCompute SQL kullanıldığından SQL atomikliği garanti edemez. Bu nedenle truncate seçeneği atomik bir işlem değildir. Birden çok görev aynı Tablo veya Bölüm'ün bölümlerini eşzamanlı olarak temizlediğinde eşzamanlılık sıralama sorunları oluşabilir. Bu sorunu önlemek için aynı anda birden çok işin aynı bölümde DDL işlemleri gerçekleştirmemesini veya birden çok eşzamanlı işi başlatmadan önce bölümleri oluşturmanızı öneririz. |
Evet |
Yok |
|
emptyAsNull |
Yazmadan önce boş dizelerin NULL'a dönüştürülüp dönüştürülmeyeceğini belirtir. |
Hayır |
false |
|
consistencyCommit |
Senkronizasyondan sonra görünür.
|
Hayır |
false |