DataHub veri kaynağı, DataHub'dan veri okumak ve DataHub'a veri yazmak için çift yönlü bir kanal sağlar; bu sayede büyük ölçekli verilerin verimli işlenmesine olanak tanır. Bu konuda, DataWorks'ün DataHub için sunduğu veri eşitleme yetenekleri açıklanmaktadır.
Desteklenen sürümler
-
DataHub Reader, DataHub'dan veri okumak için Java DataHub SDK'sını kullanır. Aşağıdaki kodda SDK sürümü gösterilmektedir.
<dependency> <groupId>com.aliyun.DataHub</groupId> <artifactId>aliyun-sdk-DataHub</artifactId> <version>2.9.1</version> </dependency> -
DataHub Writer, DataHub'a veri yazmak için Java DataHub SDK'sını kullanır. Aşağıdaki kodda SDK sürümü gösterilmektedir.
<dependency> <groupId>com.aliyun.datahub</groupId> <artifactId>aliyun-sdk-datahub</artifactId> <version>2.5.1</version> </dependency>
Sınırlamalar
Toplu okuma/yazma
STRING veri türü yalnızca UTF-8 kodlamasını destekler. Tek bir STRING sütunu 1 MB'ı aşamaz.
Gerçek zamanlı okuma/yazma
Gerçek zamanlı eşitleme görevleri serverless kaynak gruplarını destekler.
Verileri gerçek zamanlı olarak DataHub'a eşitlerken veriler, kaynak verilerin karma değerine göre parçalara ayrılır. Aynı karma değerine sahip kayıtlar aynı parçaya eşitlenir.
Gerçek zamanlı tam veritabanı yazma
Görevi çalıştırdığınızda önce bir toplu eşitleme görevi tüm verileri DataHub'a yazar. Ardından, kaynakta meydana gelen artımlı verileri hedefe eşitleyen gerçek zamanlı bir eşitleme görevi başlar. Veriler aşağıdaki kurallara göre yazılır:
Veriler yalnızca TUPLE türündeki DataHub konularına yazılabilir. TUPLE veri türü hakkında daha fazla bilgi için bkz. Veri türleri.
Verileri gerçek zamanlı olarak DataHub'a eşitlerken kaynak tablo alanlarına beş ek alan eklenir. Görevi yapılandırırken başka alanlar da ekleyebilirsiniz. DataHub'a gönderilen nihai mesaj biçimi hakkında daha fazla bilgi için bkz. Ek: DataHub mesaj biçimleri.
Desteklenen alan türleri
Verileri DataHub'a eşitlerken değerler karşılık gelen alan türleriyle eşlenir. DataHub yalnızca BIGINT, STRING, BOOLEAN, DOUBLE, TIMESTAMP ve DECIMAL veri türlerini destekler.
Veri kaynağı ekleme
DataWorks'te bir eşitleme görevi geliştirmeden önce Veri kaynağı yapılandırması bölümündeki talimatları izleyerek gerekli veri kaynağını DataWorks'e eklemeniz gerekir. Bir veri kaynağı eklerken parametrelerin anlamlarını anlamak için DataWorks konsolunda parametre açıklamalarını görüntüleyebilirsiniz.
Veri eşitleme görevi geliştirme
Eşitleme görevini yapılandırmak için giriş noktası ve prosedür hakkında bilgi edinmek üzere aşağıdaki yapılandırma kılavuzlarına bakın.
Tek tablo toplu eşitleme görevi yapılandırma
Prosedür için bkz. Sihirbaz modunda toplu eşitleme görevi yapılandırma ve Betik modunda toplu eşitleme görevi yapılandırma.
Betik modu yapılandırmasına yönelik tüm parametreler ve betik örnekleri için aşağıdaki Ek: Betik örnekleri ve parametre açıklaması bölümüne bakın.
Tek tablo gerçek zamanlı eşitleme görevi yapılandırma
Prosedür için bkz. Gerçek zamanlı eşitleme görevi yapılandırma.
Farklı DataHub veri türleri tarafından desteklenen işlemler, parçalama stratejileri, veri biçimleri ve ilgili mesaj örnekleri hakkında bilgi edinmek için bkz. Ek: DataHub mesaj biçimleri.
Gerçek zamanlı tam veritabanı eşitleme görevi yapılandırma
Prosedür için bkz. Gerçek zamanlı tam veritabanı eşitleme görevi yapılandırma.
SSS
DataHub'a tek seferde yazılan veri miktarı sınırı aştığında yazma hatalarını nasıl ele alırım?
Ek: Betik örnekleri ve parametre açıklaması
Kod düzenleyici kullanarak toplu eşitleme görevi yapılandırma
Kod düzenleyiciyi kullanarak bir toplu eşitleme görevi 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 bkz. Betik modu yapılandırması. Aşağıdaki bilgiler, kod düzenleyiciyi kullanarak bir toplu eşitleme görevi yapılandırırken veri kaynakları için yapılandırmanız gereken parametreleri açıklar.
Reader betik örneği
{
"type":"job",
"version":"2.0",// The version number.
"steps":[
{
"job": {
"content": [
{
"reader": {
"name": "DataHubreader",
"parameter": {
"endpoint": "xxx" // The endpoint of DataHub.
"accessId": "xxx", // The AccessKey ID used to access DataHub.
"accessKey": "xxx", // The AccessKey secret used to access DataHub.
"project": "xxx", // The name of the DataHub project.
"topic": "xxx" // The name of the DataHub topic.
"batchSize": 1000, // The number of records to read at a time.
"beginDateTime": "20180910111214", // The start time for data consumption.
"endDateTime": "20180910111614", // The end time for data consumption.
"column": [
"col0",
"col1",
"col2",
"col3",
"col4"
]
}
},
"writer": {
"name": "streamwriter",
"parameter": {
"print": false
}
}
}
]
}
}
],
"setting":{
"errorLimit":{
"record":"0"// The error count.
},
"speed":{
"throttle":true,// Specifies whether to enable throttling. If throttle is set to false, the mbps parameter does not take effect, which means 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"
}
]
}
}
Reader betik parametreleri
|
Parametre |
Açıklama |
Gerekli |
|
endpoint |
DataHub uç noktası. |
Evet |
|
accessId |
DataHub'a erişmek için kullanılan accessId. |
Evet |
|
accessKey |
DataHub'a erişmek için kullanılan accessKey. |
Evet |
|
project |
DataHub projesinin adı. Bir proje, DataHub'daki temel kaynak yönetimi birimidir ve kaynak yalıtımı ile erişim kontrolü için kullanılır. |
Evet |
|
topic |
DataHub konusunun adı. |
Evet |
|
batchSize |
Tek seferde okunacak kayıt sayısı. Varsayılan değer: 1.024. |
Hayır |
|
beginDateTime |
Veri tüketiminin başlangıç zamanı. Bu parametre, zaman aralığının sol sınırını (dahil) belirtir ve yyyyMMddHHmmss biçiminde bir zaman dizesi olmalıdır. Artımlı eşitleme uygulamak için bu parametreyi DataWorks zamanlama parametreleri ile birlikte kullanabilirsiniz. Örneğin, düğüm zamanlama parametresinin parametre adını bizdate olarak ve parametre değerini $[yyyymmdd-1] olarak ayarlayın. Ardından, beginDateTime parametresini ${bizdate}000000 olarak ayarlayın; bu, veri tüketiminin başlangıç zamanının önceki günün 00:00:00 saati olduğunu gösterir. Not
beginDateTime ve endDateTime birlikte kullanılmalıdır. |
Evet |
|
endDateTime |
Veri tüketiminin bitiş zamanı. Bu parametre, zaman aralığının sağ sınırını (hariç) belirtir ve yyyyMMddHHmmss biçiminde bir zaman dizesi olmalıdır. Artımlı eşitleme uygulamak için bu parametreyi DataWorks zamanlama parametreleri ile birlikte kullanabilirsiniz. Örneğin, düğüm zamanlama parametresinin parametre adını bizdate olarak ve parametre değerini $[yyyymmdd-1] olarak ayarlayın. Ardından, endDateTime parametresini ${bizdate}235959 olarak ayarlayın; bu, veri tüketiminin bitiş zamanının önceki günün 23:59:59 saati olduğunu gösterir. Not
beginDateTime ve endDateTime birlikte kullanılmalıdır. |
Evet |
Writer betik örneği
{
"type": "job",
"version": "2.0",// The version number.
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "datahub",// The plug-in name.
"parameter": {
"datasource": "",// The data source.
"topic": "",// A topic is the smallest unit for subscription and publishing in DataHub. You can use a topic to represent a type or category of streaming data.
"maxRetryCount": 500,// The maximum number of retries upon task failure.
"maxCommitSize": 1048576// The data is committed in batches to the destination when the accumulated data buffer reaches the maxCommitSize (in bytes).
// DataHub limits a single request to 10,000 records. Exceeding this limit causes a task error. Set this parameter based on the average size per record multiplied by 10,000. For example, if each record is 10 KB, set this parameter to a value lower than 10 × 10,000 KB.
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": ""// The error count.
},
"speed": {
"throttle":true,// Specifies whether to enable throttling. If throttle is set to false, the mbps parameter does not take effect, which means throttling is disabled. If throttle is set to true, throttling is enabled.
"concurrent":20, // The concurrency.
"mbps":"12"// The throttling rate. 1 mbps = 1 MB/s.
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Writer betik parametreleri
|
Parametre |
Açıklama |
Gerekli |
Varsayılan değer |
|
accessId |
DataHub accessId. |
Evet |
Yok |
|
accessKey |
DataHub accessKey. |
Evet |
Yok |
|
endPoint |
DataHub kaynaklarına erişmek için kaynağın ait olduğu hizmete göre doğru etki alanı adını seçmeniz gerekir. |
Evet |
Yok |
|
maxRetryCount |
Görev başarısız olduğunda maksimum yeniden deneme sayısı. |
Hayır |
Yok |
|
mode |
Değer STRING türünde olduğunda yazma modu. |
Evet |
Yok |
|
parseContent |
Ayrıştırılacak içerik. |
Evet |
Yok |
|
project |
Proje, DataHub verileri için temel organizasyon birimidir. Bir proje birden çok konu içerir. Not
DataHub projeleri MaxCompute projelerinden bağımsızdır. MaxCompute'de oluşturduğunuz projeler DataHub'da yeniden kullanılamaz. Projeleri ayrı ayrı oluşturmanız gerekir. |
Evet |
Yok |
|
topic |
Konu, DataHub'da abonelik ve yayınlama için en küçük birimdir. Bir konu, akış verilerinin bir türünü veya kategorisini temsil etmek için kullanılabilir. |
Evet |
Yok |
|
maxCommitSize |
Yazma verimliliğini artırmak için DataX verileri bir arabellekte biriktirir ve biriken veri maxCommitSize (bayt cinsinden) değerine ulaştığında verileri hedefe toplu olarak gönderir. Varsayılan değer 1.048.576'dır (1 MB). DataHub, tek bir isteği 10.000 kayıtla sınırlar. Bu sınırın aşılması bir görev hatasına neden olur. DataHub'a her istekte yazılan kayıt sayısını kontrol etmek için bu parametreyi, kayıt başına ortalama boyut çarpı 10.000 değerine göre ayarlayın. |
Hayır |
1MB |