Sumber data DataHub menyediakan saluran dua arah untuk membaca dari dan menulis ke DataHub. Dokumen ini menjelaskan cara mengonfigurasi sinkronisasi data untuk sumber data ini di DataWorks.
Versi yang didukung
DataHub Reader menggunakan DataHub Java SDK untuk membaca data. SDK berikut digunakan:
<dependency> <groupId>com.aliyun.DataHub</groupId> <artifactId>aliyun-sdk-DataHub</artifactId> <version>2.9.1</version> </dependency>DataHub Writer menggunakan DataHub Java SDK untuk menulis data. SDK berikut digunakan:
<dependency> <groupId>com.aliyun.datahub</groupId> <artifactId>aliyun-sdk-datahub</artifactId> <version>2.5.1</version> </dependency>
Batasan
Pembacaan dan penulisan data batch
Tipe data STRING hanya mendukung encoding UTF-8. Satu bidang STRING dapat memiliki ukuran hingga 1 MB.
Pembacaan dan penulisan data real-time
Tugas sinkronisasi real-time mendukung serverless resource groups.
Sistem menyinkronkan data dengan nilai hash yang sama ke shard yang sama.
Penulisan database penuh secara real-time
Saat tugas dimulai, proses batch menulis data lengkap ke DataHub. Setelah sinkronisasi data penuh selesai, proses real-time mulai menyinkronkan data inkremental dari sumber ke tujuan.
Data hanya dapat ditulis ke topik bertipe TUPLE di DataHub. Untuk informasi lebih lanjut tentang tipe data TUPLE, lihat Tipe data.
Saat Anda menyinkronkan data ke DataHub secara real-time, lima bidang tambahan ditambahkan ke bidang tabel sumber. Anda juga dapat menambahkan bidang kustom saat mengonfigurasi tugas. Untuk informasi lebih lanjut tentang format pesan yang dikirim ke DataHub, lihat Lampiran: Format pesan.
Tipe bidang yang didukung
Saat Anda menyinkronkan data dengan DataHub, bidang dipetakan ke tipe data yang sesuai. DataHub hanya mendukung tipe data berikut: BIGINT, STRING, BOOLEAN, DOUBLE, TIMESTAMP, dan DECIMAL.
Tambahkan sumber data
Sebelum mengembangkan tugas sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk dalam manajemen sumber data. Anda dapat melihat deskripsi parameter di Konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.
Kembangkan tugas sinkronisasi data
Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Sinkronisasi batch tabel tunggal
Untuk prosedurnya, lihat Gunakan Antarmuka tanpa kode dan Gunakan editor kode.
Untuk daftar lengkap parameter dan contoh skrip editor kode, lihat Lampiran: Kode dan parameter.
Sinkronisasi real-time tabel tunggal
Untuk prosedurnya, lihat Konfigurasikan tugas sinkronisasi real-time di DataStudio.
Untuk informasi tentang operasi yang didukung untuk berbagai tipe data DataHub, kebijakan sharding, format data, dan contoh pesan, lihat Lampiran: Format pesan.
Sinkronisasi real-time database penuh
Untuk prosedurnya, lihat Konfigurasikan tugas sinkronisasi database penuh real-time.
FAQ
Lampiran: Kode dan parameter
Konfigurasikan tugas sinkronisasi batch menggunakan editor kode
Jika Anda ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Gunakan editor kode. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.
Contoh skrip Reader
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"job": {
"content": [
{
"reader": {
"name": "DataHubreader",
"parameter": {
"endpoint": "xxx", // Titik akhir DataHub.
"accessId": "xxx", // ID AccessKey yang digunakan untuk mengakses DataHub.
"accessKey": "xxx", // Rahasia AccessKey yang digunakan untuk mengakses DataHub.
"project": "xxx", // Nama proyek DataHub tujuan.
"topic": "xxx", // Nama topik DataHub tujuan.
"batchSize": 1000, // Jumlah catatan yang dibaca sekaligus.
"beginDateTime": "20180910111214", // Waktu mulai konsumsi data.
"endDateTime": "20180910111614", // Waktu akhir konsumsi data.
"column": [
"col0",
"col1",
"col2",
"col3",
"col4"
]
}
},
"writer": {
"name": "streamwriter",
"parameter": {
"print": false
}
}
}
]
}
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah maksimum error yang diizinkan.
},
"speed":{
"throttle":true,// Jika throttle diatur ke false, parameter mbps diabaikan, dan tidak ada pembatasan kecepatan. Jika throttle diatur ke true, pembatasan kecepatan diaktifkan.
"concurrent":1,// Jumlah thread konkuren.
"mbps":"12"// Laju transfer data maksimum. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter Pembaca
Parameter | Deskripsi | Wajib |
endpoint | Titik akhir DataHub. | Ya |
accessId | ID AccessKey yang digunakan untuk mengakses DataHub. | Ya |
accessKey | Rahasia AccessKey yang digunakan untuk mengakses DataHub. | Ya |
project | Nama proyek di DataHub target. Proyek adalah unit manajemen sumber daya di DataHub yang digunakan untuk isolasi dan kontrol sumber daya. | Ya |
topic | Nama topik DataHub tujuan. | Ya |
batchSize | Jumlah catatan yang dibaca sekaligus. Nilai default: 1.024. | Tidak |
beginDateTime | Waktu mulai konsumsi data dalam format yyyyMMddHHmmss. Rentang waktu bersifat inklusif terhadap waktu mulai dan eksklusif terhadap waktu akhir. Untuk menyinkronkan data secara inkremental, Anda dapat menggunakan parameter ini bersama parameter penjadwalan DataWorks. Misalnya, Anda dapat mengatur nama parameter menjadi bizdate dan nilai menjadi $[yyyymmdd-1]. Kemudian, atur beginDateTime menjadi ${bizdate}000000. Ini mengonfigurasi waktu mulai menjadi pukul 00:00:00 pada hari sebelumnya. Catatan Parameter beginDateTime dan endDateTime harus digunakan bersama. | Ya |
endDateTime | Waktu akhir konsumsi data dalam format yyyyMMddHHmmss. Timestamp ini merupakan batas eksklusif untuk rentang waktu. Untuk menyinkronkan data secara inkremental, Anda dapat menggunakan parameter ini bersama parameter penjadwalan DataWorks. Misalnya, Anda dapat mengatur nama parameter menjadi bizdate dan nilai menjadi $[yyyymmdd-1]. Kemudian, atur endDateTime menjadi ${bizdate}235959. Ini mengonfigurasi waktu akhir menjadi pukul 23:59:59 pada hari sebelumnya. Catatan Parameter beginDateTime dan endDateTime harus digunakan bersama. | Ya |
Contoh skrip Writer
{
"type": "job",
"version": "2.0",// Nomor versi.
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "datahub",// Nama plugin.
"parameter": {
"datasource": "",// Sumber data.
"topic": "",// Topik adalah unit dasar untuk langganan dan publikasi di DataHub. Anda dapat menggunakan topik untuk merepresentasikan jenis atau kategori tertentu dari data streaming.
"maxRetryCount": 500,// Jumlah maksimum percobaan ulang jika tugas gagal.
"maxCommitSize": 1048576// Data dikomit secara batch ketika buffer mencapai ukuran ini (dalam byte). Batas catatan per permintaan DataHub adalah 10.000. Untuk mencegah error, pastikan nilai ini kurang dari (ukuran rata-rata catatan * 10.000).
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": ""// Jumlah maksimum error yang diizinkan.
},
"speed": {
"throttle":true,// Jika throttle diatur ke false, parameter mbps diabaikan, dan tidak ada pembatasan kecepatan. Jika throttle diatur ke true, pembatasan kecepatan diaktifkan.
"concurrent":20, // Jumlah thread konkuren.
"mbps":"12"// Laju transfer data maksimum. 1 mbps = 1 MB/s.
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}Parameter Writer
Parameter | Deskripsi | Wajib | Default |
accessId | ID AccessKey DataHub. | Ya | Tidak ada |
accessKey | Rahasia AccessKey DataHub. | Ya | Tidak ada |
endPoint | Titik akhir layanan DataHub tempat sumber daya Anda berada. | Ya | Tidak ada |
maxRetryCount | Jumlah maksimum percobaan ulang jika tugas gagal. | Tidak | Tidak ada |
mode | Mode penulisan untuk nilai tipe data STRING. | Ya | Tidak ada |
parseContent | Menentukan apakah konten perlu diurai. | Ya | Tidak ada |
project | Proyek adalah unit organisasi dasar untuk data di DataHub. Sebuah proyek berisi beberapa topik. Catatan Proyek DataHub bersifat independen dari proyek MaxCompute. Anda tidak dapat menggunakan kembali proyek MaxCompute di DataHub. | Ya | Tidak ada |
topic | Di DataHub, topik adalah unit dasar untuk publikasi dan langganan data, yang merepresentasikan kategori data streaming. | Ya | Tidak ada |
maxCommitSize | Untuk meningkatkan performa penulisan, DataX menyimpan data dalam buffer dan menuliskannya secara batch ketika buffer mencapai ukuran yang ditentukan oleh maxCommitSize (dalam byte). DataHub memperbolehkan maksimal 10.000 catatan per permintaan. Untuk mencegah error, atur parameter ini ke nilai yang kurang dari ukuran total 10.000 catatan berdasarkan ukuran rata-rata catatan Anda. | Tidak | 1 MB |