Sumber data DataHub menyediakan saluran dua arah untuk membaca dan menulis data ke DataHub, memungkinkan pemrosesan data skala besar secara efisien. Topik ini menjelaskan kemampuan sinkronisasi data yang disediakan DataWorks untuk DataHub.
Versi yang didukung
-
DataHub Reader menggunakan DataHub SDK for Java untuk membaca data dari DataHub. Kode berikut menunjukkan versi SDK tersebut.
<dependency> <groupId>com.aliyun.DataHub</groupId> <artifactId>aliyun-sdk-DataHub</artifactId> <version>2.9.1</version> </dependency> -
DataHub Writer menggunakan DataHub SDK for Java untuk menulis data ke DataHub. Kode berikut menunjukkan versi SDK tersebut.
<dependency> <groupId>com.aliyun.datahub</groupId> <artifactId>aliyun-sdk-datahub</artifactId> <version>2.5.1</version> </dependency>
Batasan
Pembacaan/penulisan batch
Tipe data STRING hanya mendukung pengkodean UTF-8. Satu kolom STRING tidak boleh melebihi 1 MB.
Pembacaan/penulisan real-time
-
Tugas sinkronisasi real-time mendukung serverless resource groups.
-
Saat melakukan sinkronisasi data ke DataHub secara real-time, data di-shard berdasarkan nilai hash dari data sumber. Catatan (record) dengan nilai hash yang sama akan disinkronkan ke shard yang sama.
Penulisan real-time basis data penuh
Saat menjalankan tugas, tugas sinkronisasi batch terlebih dahulu menulis data lengkap ke DataHub. Kemudian, tugas sinkronisasi real-time dimulai untuk menyinkronkan data inkremental dari sumber ke tujuan. Data ditulis berdasarkan aturan berikut:
-
Data hanya dapat ditulis ke topik DataHub bertipe TUPLE. Untuk informasi lebih lanjut mengenai tipe data TUPLE, lihat Tipe data.
-
Saat melakukan sinkronisasi data ke DataHub secara real-time, lima bidang tambahan ditambahkan ke bidang tabel sumber. Anda juga dapat menambahkan bidang lain saat mengonfigurasi tugas. Untuk informasi lebih lanjut mengenai format pesan akhir yang dikirim ke DataHub, lihat Lampiran: Format pesan DataHub.
Tipe bidang yang didukung
Saat menyinkronkan data ke DataHub, nilai-nilai dipetakan ke tipe bidang yang sesuai. DataHub hanya mendukung tipe data 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 mengenai titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Konfigurasi tugas sinkronisasi batch tabel tunggal
-
Untuk prosedurnya, lihat Konfigurasi tugas sinkronisasi batch dalam mode wizard dan Konfigurasi tugas sinkronisasi batch dalam mode skrip.
-
Untuk semua parameter dan contoh skrip konfigurasi mode skrip, lihat Lampiran: Contoh skrip dan deskripsi parameter di bawah ini.
Konfigurasi tugas sinkronisasi real-time tabel tunggal
Untuk prosedurnya, lihat Konfigurasi tugas sinkronisasi real-time.
Untuk informasi mengenai operasi yang didukung oleh berbagai tipe data DataHub, strategi sharding, format data, dan contoh pesan terkait, lihat Lampiran: Format pesan DataHub.
Konfigurasi tugas sinkronisasi real-time basis data penuh
Untuk prosedurnya, lihat Konfigurasi tugas sinkronisasi real-time basis data penuh.
FAQ
Lampiran: Contoh skrip dan deskripsi parameter
Konfigurasi tugas sinkronisasi batch menggunakan editor kode
Jika 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.
"topic": "xxx" // Nama topik DataHub.
"batchSize": 1000, // Jumlah catatan yang dibaca sekaligus.
"beginDateTime": "20180910111214", // Waktu mulai untuk konsumsi data.
"endDateTime": "20180910111614", // Waktu akhir untuk konsumsi data.
"column": [
"col0",
"col1",
"col2",
"col3",
"col4"
]
}
},
"writer": {
"name": "streamwriter",
"parameter": {
"print": false
}
}
}
]
}
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah kesalahan.
},
"speed":{
"throttle":true,// Menentukan apakah Pembatasan kecepatan diaktifkan. Jika throttle diatur ke false, parameter mbps tidak berlaku, artinya Pembatasan kecepatan dinonaktifkan. Jika throttle diatur ke true, Pembatasan kecepatan diaktifkan.
"concurrent":1,// Konkurensi.
"mbps":"12"// Laju Pembatasan kecepatan. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter skrip Reader
|
Parameter |
Deskripsi |
Wajib |
|
endpoint |
endpoint DataHub. |
Ya |
|
accessId |
accessId yang digunakan untuk mengakses DataHub. |
Ya |
|
accessKey |
accessKey yang digunakan untuk mengakses DataHub. |
Ya |
|
project |
Nama proyek DataHub. project merupakan unit manajemen sumber daya dasar di DataHub dan digunakan untuk isolasi sumber daya serta kontrol akses. |
Ya |
|
topic |
Nama topic DataHub. |
Ya |
|
batchSize |
Jumlah catatan yang dibaca sekaligus. Nilai default: 1.024. |
Tidak |
|
beginDateTime |
Waktu mulai untuk konsumsi data. Parameter ini menentukan batas kiri (inklusif) rentang waktu dan harus berupa string waktu dalam format yyyyMMddHHmmss. Untuk menerapkan sinkronisasi inkremental, Anda dapat menggunakan parameter ini bersama dengan parameter penjadwalan DataWorks. Misalnya, atur nama parameter parameter penjadwalan node menjadi bizdate dan nilai parameter menjadi $[yyyymmdd-1]. Lalu, atur beginDateTime menjadi ${bizdate}000000, yang berarti waktu mulai konsumsi data adalah pukul 00:00:00 hari sebelumnya. Catatan beginDateTime dan endDateTime harus digunakan bersama. |
Ya |
|
endDateTime |
Waktu akhir untuk konsumsi data. Parameter ini menentukan batas kanan (eksklusif) rentang waktu dan harus berupa string waktu dalam format yyyyMMddHHmmss. Untuk menerapkan sinkronisasi inkremental, Anda dapat menggunakan parameter ini bersama dengan parameter penjadwalan DataWorks. Misalnya, atur nama parameter parameter penjadwalan node menjadi bizdate dan nilai parameter menjadi $[yyyymmdd-1]. Lalu, atur endDateTime menjadi ${bizdate}235959, yang berarti waktu akhir konsumsi data adalah pukul 23:59:59 hari sebelumnya. Catatan 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 terkecil untuk langganan dan penerbitan di DataHub. Anda dapat menggunakan topik untuk merepresentasikan jenis atau kategori data streaming.
"maxRetryCount": 500,// Jumlah maksimum percobaan ulang saat tugas gagal.
"maxCommitSize": 1048576// Data dikomit secara batch ke tujuan ketika buffer data terakumulasi mencapai maxCommitSize (dalam byte).
// DataHub membatasi satu permintaan hingga 10.000 catatan. Melebihi batas ini menyebabkan kesalahan tugas. Atur parameter ini berdasarkan ukuran rata-rata per catatan dikalikan 10.000. Misalnya, jika setiap catatan berukuran 10 KB, atur parameter ini ke nilai di bawah 10 × 10.000 KB.
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": ""// Jumlah kesalahan.
},
"speed": {
"throttle":true,// Menentukan apakah Pembatasan kecepatan diaktifkan. Jika throttle diatur ke false, parameter mbps tidak berlaku, artinya Pembatasan kecepatan dinonaktifkan. Jika throttle diatur ke true, Pembatasan kecepatan diaktifkan.
"concurrent":20, // Konkurensi.
"mbps":"12"// Laju Pembatasan kecepatan. 1 mbps = 1 MB/s.
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}Parameter skrip Writer
|
Parameter |
Deskripsi |
Wajib |
Nilai default |
|
accessId |
accessId DataHub. |
Ya |
N/A |
|
accessKey |
accessKey DataHub. |
Ya |
N/A |
|
endPoint |
Untuk mengakses sumber daya DataHub, Anda harus memilih nama domain yang benar berdasarkan layanan tempat sumber daya tersebut berada. |
Ya |
N/A |
|
maxRetryCount |
Jumlah maksimum percobaan ulang saat tugas gagal. |
Tidak |
N/A |
|
mode |
Mode penulisan saat nilainya bertipe STRING. |
Ya |
N/A |
|
parseContent |
Konten yang akan diurai. |
Ya |
N/A |
|
project |
Proyek adalah unit organisasi dasar untuk data DataHub. Satu proyek berisi beberapa topik. Catatan Proyek DataHub bersifat independen dari proyek MaxCompute. Proyek yang Anda buat di MaxCompute tidak dapat digunakan kembali di DataHub. Anda harus membuat proyek secara terpisah. |
Ya |
N/A |
|
topic |
Topik adalah unit terkecil untuk langganan dan penerbitan di DataHub. Anda dapat menggunakan topik untuk merepresentasikan jenis atau kategori data streaming. |
Ya |
N/A |
|
maxCommitSize |
Untuk meningkatkan efisiensi penulisan, DataX mengakumulasi data dalam buffer dan meng-commit data tersebut secara batch ke tujuan ketika data terakumulasi mencapai maxCommitSize (dalam byte). Nilai default-nya adalah 1.048.576, yaitu 1 MB. DataHub membatasi satu permintaan hingga 10.000 catatan. Melebihi batas ini menyebabkan kesalahan tugas. Atur parameter ini berdasarkan ukuran rata-rata per catatan dikalikan 10.000 untuk mengontrol jumlah catatan yang ditulis ke DataHub per permintaan. |
Tidak |
1MB |