Persiapan
Buat tabel MaxCompute
DataHub memungkinkan Anda menyinkronkan data ke tabel MaxCompute. Fitur ini mendukung tabel partisi maupun tabel non-partisi. Untuk mempermudah pemrosesan data di MaxCompute, kami merekomendasikan penggunaan tabel partisi.
Anda dapat menggunakan DataHub untuk menyinkronkan data dari topik TUPLE dan BLOB ke tabel MaxCompute.
Jika Anda menyinkronkan data dari topik TUPLE, tipe data pada tabel MaxCompute tujuan harus sesuai dengan tipe data DataHub. Tabel berikut menjelaskan pemetaan tipe data tersebut.
MaxCompute
DataHub
BIGINT
BIGINT
STRING
STRING
BOOLEAN
BOOLEAN
DOUBLE
DOUBLE
DATETIME
TIMESTAMP
DECIMAL
DECIMAL
TINYINT
TINIINT
SMALLINT
SMALLINT
INT
INTEGER
FLOAT
FLOAT
MAP
Not supported
ARRAY
Not supported
DataHub tidak mendukung semua tipe data MaxCompute. Oleh karena itu, Anda harus membuat skema tabel MaxCompute berdasarkan tipe data DataHub.
Jika Anda menyinkronkan data dari topik BLOB, skema tabel MaxCompute hanya boleh berisi satu kolom STRING. Secara default, DataHub menyinkronkan data ke kolom ini.
DataHub
MaxCompute
BLOB
STRING
Untuk mempermudah pelacakan data dan troubleshooting, Anda dapat menambahkan bidang
__rowkey__ STRINGsaat membuat skema tabel MaxCompute. DataHub secara otomatis menyinkronkan informasi jejak data ke kolom ini, yang membantu investigasi data di masa mendatang.
Siapkan akun untuk tugas sinkronisasi dan berikan izin
Saat membuat tugas sinkronisasi untuk MaxCompute, Anda harus memasukkan informasi akun yang diperlukan untuk mengakses tabel MaxCompute. Pastikan informasi akun tersebut valid. Biasanya, Pengguna RAM MaxCompute sudah mencukupi.
Anda harus memberikan izin yang diperlukan kepada akun tersebut agar dapat mengakses tabel MaxCompute. Izin tersebut mencakup
CreateInstance,Describe,Alter, danUpdate.Anda dapat menggunakan Konsol DataWorks untuk mengelola izin tabel MaxCompute. Untuk informasi selengkapnya, lihat Configure MaxCompute Engine PermissionsConfigure MaxCompute Engine Permissions. Anda juga dapat menggunakan antarmuka baris perintah MaxCompute untuk memberikan izin. Untuk informasi selengkapnya, lihat MaxCompute Usage and Authorization Management.
Konfirmasi TimestampUnit
Parameter TimestampUnit pada connector mengonversi data TIMESTAMP. Data dikonversi berdasarkan satuan yang Anda tentukan, lalu ditulis ke bidang bertipe tanggal, seperti bidang datetime, di sistem downstream.
Jika nilai kolom TIMESTAMP dalam satuan detik, atur TimestampUnit menjadi "SECOND" saat membuat konektor. Jika nilainya dalam milidetik, atur menjadi "MILLISECOND". Jika nilainya dalam mikrodetik, atur menjadi "MICROSECOND".
Banyak partisi dapat memperlambat sinkronisasi data dari DataHub karena standar penulisan saat ini di MaxCompute. Saat membuat tugas sinkronisasi MaxCompute, batasi jumlah partisi—terutama dalam mode sinkronisasi USER_DEFINE.
Usahakan agar data dalam partisi yang sama sekontinu mungkin. Hindari perubahan partisi yang terlalu sering.
Saat membuat partisi, jangan membuat terlalu banyak.
Jika fitur daftar putih diaktifkan untuk proyek MaxCompute, hanya Perangkat dalam daftar putih yang dapat mengakses proyek tersebut. Setelah Anda mengaktifkan daftar putih IP MaxCompute, Anda harus mengonfigurasi daftar putih layanan agar layanan sinkronisasi dapat diakses. Untuk informasi selengkapnya tentang cara mengonfigurasi daftar putih, lihat Ikhtisar.
Mode sinkronisasi
Mode tambah
Data ditambahkan ke tabel tujuan. Mode ini cocok untuk skenario di mana data hanya perlu ditambahkan, bukan diperbarui.
Mode Upsert
Upsert menggabungkan operasi Update dan Insert. Logikanya sebagai berikut:
Jika catatan dengan kunci primer yang sama sudah ada di tabel tujuan, catatan yang ada diperbarui.
Jika catatan dengan kunci primer yang sama belum ada, catatan baru dimasukkan.
Mode Upsert memungkinkan Anda menangani pembaruan dan penyisipan data secara lebih fleksibel sehingga data di tabel tujuan selalu mutakhir.
Untuk informasi lebih lanjut tentang fitur Upsert MaxCompute, lihat Terms.
Skenario
Perbarui data berdasarkan kunci primer: Data dapat berubah seiring waktu dan harus diperbarui berdasarkan kunci primernya.
Pertahankan keunikan data di tabel tujuan: Pastikan setiap catatan di tabel tujuan bersifat unik untuk menghindari duplikasi data.
Proses data duplikat: Hapus duplikat dari data dalam jumlah besar berdasarkan kunci primer.
Deskripsi konfigurasi
Tipe topik DataHub: Harus berupa topik TUPLE.
Skema Topik DataHub: Dukungan tersedia untuk dua tipe berikut:
Tipe skema untuk data yang disinkronkan dari DTS ke DataHub, yang disebut sebagai format DTS.
Pada skema yang Anda buat, Anda harus memilih kolom String sebagai kolom operasi. Hal ini menetapkan skema sebagai format kustom.
Tabel tujuan ODPS: Harus berupa Transactional Table 2.0.
Aturan sinkronisasi
1. Format DTS
Saat menyinkronkan data dari DTS ke DataHub, DataHub menggunakan kolom operation_flag, before_flag, dan after_flag dalam skema untuk menentukan cara menyinkronkan data ke tabel tujuan ODPS. Aturannya sebagai berikut:
operation_flag | before_flag | after_flag | OperationType | Sync to destination table |
I | * | * | UPSERT | Perbarui catatan di tabel tujuan berdasarkan kunci primer. |
U | Y | N | DELETE | Hapus catatan dari tabel tujuan berdasarkan kunci primer. |
U | N | Y | UPSERT | Perbarui catatan di tabel tujuan berdasarkan kunci primer. |
D | * | * | DELETE | Hapus catatan dari tabel tujuan berdasarkan kunci primer. |
2. Format kustom
Untuk data kustom, DataHub menentukan cara menyinkronkan data ke tabel tujuan ODPS berdasarkan kolom operasi yang Anda pilih.
ddddd | OperationType | Sync to destination table |
U | UPSERT | Perbarui catatan di tabel tujuan berdasarkan kunci primer. |
D | DELETE | Hapus catatan dari tabel tujuan berdasarkan kunci primer. |
Buat tugas sinkronisasi
Di DataHub, klik sebuah topik untuk membuka halaman detailnya.
Pada halaman detail topik, klik tombol Sync di pojok kanan atas untuk membuat tugas sinkronisasi.

Pilih jenis pekerjaan MaxCompute untuk membuka halaman Create Connector.
Deskripsi item konfigurasi:
Parameter
Opsi
Wajib
Deskripsi
Project Name
/
Ya
Nama proyek MaxCompute.
Schema
/
Tidak
Nama skema MaxCompute.
CatatanUntuk menggunakan fitur skema, aktifkan pengembangan sintaks skema. Untuk informasi lebih lanjut tentang cara mengaktifkan fitur ini dan detail skema lainnya, lihat Schema operations.
Table
/
Ya
Nama tabel MaxCompute.
CatatanJika Anda menggunakan mode Upsert, tabel tujuan harus berupa Transactional Table 2.0.
Sync mode
Append
Ya
Menambahkan data ke tabel tujuan MaxCompute.
Upsert
Memperbarui atau menghapus catatan di tabel transaksional MaxCompute berdasarkan kunci primer.
Untuk informasi selengkapnya, lihat bagian Mode sinkronisasi dalam topik ini.
Upsert method
SYNC_CUSTOM
Wajib jika Anda mengatur Sync mode ke Upsert. Tidak berlaku jika Anda mengatur Sync mode ke Append.
Bidang kustom untuk operasi upsert.
SYNC_NONE
Semua data ditulis ke tabel tujuan sebagai operasi upsert.
SYNC_DTS
Digunakan ketika data ditulis ke DataHub dari DTS dan aturan kolom lampiran DTS baru diaktifkan.
SYNC_DTS_OLD
Berlaku untuk skenario di mana Anda menggunakan DTS untuk menulis data ke DataHub dan mengaktifkan aturan kolom lampiran baru.
Primary key field
/
Kolom kunci primer yang Anda tentukan saat membuat tabel downstream untuk mode sinkronisasi Upsert.
Upsert operation field
/
Wajib jika Anda mengatur Upsert method ke SYNC_CUSTOM.
Pilih kolom STRING sebagai kolom operasi. Kolom ini menunjukkan apakah data disinkronkan ke tabel downstream sebagai operasi upsert atau delete.
Untuk informasi lebih lanjut tentang mode Upsert, lihat bagian Mode Upsert dalam topik ini.
Import fields: DataHub dapat menyinkronkan konten kolom tertentu ke tabel MaxCompute berdasarkan pengaturan Anda.
Partition mode: Mode ini menentukan partisi MaxCompute tempat data ditulis. DataHub mendukung mode partisi berikut:
Partition mode
Partition basis
Supported topic type
Description
USER_DEFINE
Nilai kolom kunci partisi dalam catatan. Kolom tersebut harus memiliki nama yang sama dengan bidang partisi di MaxCompute.
TUPLE
(1) Skema DataHub harus berisi bidang partisi MaxCompute. (2) Nilai kolom ini harus berupa
string UTF-8. Nilainya boleh kosong, yang berarti data tidak dipartisi.SYSTEM_TIME
Waktu saat catatan ditulis ke DataHub.
TUPLE / BLOB
(1) Dalam konfigurasi partisi, atur format waktu untuk partisi MaxCompute. (2) Atur zona waktu.
EVENT_TIME
Nilai kolom
event_time(TIMESTAMP)dalam catatan.TUPLE
(1) Dalam konfigurasi partisi, atur format waktu untuk partisi MaxCompute. (2) Atur zona waktu.
META_TIME
Nilai bidang atribut
__dh_meta_time__dari catatan.TUPLE / BLOB
(1) Dalam konfigurasi partisi, atur format waktu untuk partisi MaxCompute. (2) Atur zona waktu.
Mode
SYSTEM_TIME,EVENT_TIME, danMETA_TIMEmempartisi data berdasarkan konfigurasi timestamp dan zona waktu. Satuan default untuk timestamp adalah mikrodetik.Partition configuration: Menentukan pengaturan untuk mempartisi data berdasarkan timestamp. Konsol menggunakan format partisi MaxCompute tetap secara default. Konfigurasi partisi adalah sebagai berikut:
Partition
Time Format
Description
ds
%Y%m%d
hari
hh
%H
jam
mm
%M
menit
Interval partisi menentukan interval waktu yang digunakan untuk mengonversi timestamp menjadi partisi MaxCompute. Rentang waktunya adalah
15 menit hingga 1440 menit (1 hari), dengan interval langkah15 menit.Zona waktu (TimeZone): Menentukan zona waktu untuk mempartisi data berdasarkan timestamp.
Separator: Saat menyinkronkan data BLOB, Anda dapat menentukan separator heksadesimal untuk memisahkan data sebelum disinkronkan ke MaxCompute. Misalnya,
0Amerepresentasikanline feed (\n).Encoding Base64: Secara default, DataHub menyimpan data BLOB sebagai data biner. Kolom yang sesuai di MaxCompute bertipe STRING. Oleh karena itu, saat membuat tugas sinkronisasi di konsol, data secara default di-encode Base64 sebelum disinkronkan. Untuk opsi kustomisasi lebih lanjut, Anda dapat menggunakan kit pengembangan perangkat lunak (SDK).
Lihat tugas sinkronisasi
Anda dapat mengklik halaman detail connector untuk melihat status dan informasi checkpoint tugas sinkronisasi. Informasi ini mencakup checkpoint sinkronisasi, status sinkronisasi, serta operasi seperti restart dan stop. Gambar berikut menunjukkan contohnya.
Contoh sinkronisasi
1. Mode sinkronisasi USER_DEFINE
Buat topik DataHub.
Catatan: Skema topik harus berisi bidang partisi MaxCompute. Bidang tersebut harus bertipe STRING, seperti yang ditunjukkan pada gambar berikut:

Tulis data ke topik DataHub. Anda dapat menggunakan SDK DataHub untuk menulis data tersebut.
Saat pengujian, gunakan SDK untuk menulis beberapa catatan. Nilai untuk [ds,hh,mm] adalah [20210304,01,15] dan [20210304,02,15]. Datanya sebagai berikut:

3. Buat tugas sinkronisasi.
Dalam mode partisi USER_DEFINE, Anda dapat mengatur bidang konfigurasi partisi selama sinkronisasi. Jika tabel yang sesuai belum ada di MaxCompute, tabel tersebut akan dibuat secara otomatis.
Pada contoh ini, bidang f1 dan f2 diimpor. Bidang f3 tidak disinkronkan.
4. Konfirmasi data yang telah disinkronkan.
Anda dapat melihat informasi sinkronisasi tugas sinkronisasi di Konsol DataHub. Lakukan kueri data di MaxCompute. Hasilnya sebagai berikut:
Dalam mode USER_DEFINE, DataHub menyinkronkan data ke partisi yang sesuai berdasarkan nilai bidang pengelompokan MaxCompute.
2. Mode sinkronisasi SYSTEM_TIME
Buat topik DataHub.
Catatan: Partisi dihitung berdasarkan waktu saat data ditulis ke DataHub. Oleh karena itu, skema topik hanya perlu berisi bidang data, bukan bidang partisi, seperti yang ditunjukkan pada gambar berikut:

Tulis data ke topik DataHub. Anda dapat menggunakan SDK DataHub untuk menulis data tersebut.
Saat pengujian, gunakan SDK untuk menulis beberapa catatan. Waktu saat data ditulis ke DataHub adalah
2021-03-04 14:02:45. Datanya sebagai berikut:
Buat tugas sinkronisasi.
Pastikan konfigurasi partisi konsisten dengan partisi tabel MaxCompute.
4. Konfirmasi data yang telah disinkronkan.
Anda dapat melihat informasi sinkronisasi tugas sinkronisasi di Konsol DataHub, seperti DoneTime. Lakukan kueri data di MaxCompute. Hasilnya sebagai berikut:
Dalam mode SYSTEM_TIME, DataHub menyinkronkan data ke partisi yang sesuai berdasarkan waktu saat data ditulis ke DataHub.
FAQ
Waktu pada bidang timestamp yang disinkronkan ke MaxCompute menjadi 1970-01-19.
Penyebab: Satuan default untuk timestamp yang disinkronkan dari DataHub ke MaxCompute adalah mikrodetik. Timestamp yang ditulis pengguna dalam milidetik. Solusi: Tulis timestamp ke DataHub dalam mikrodetik.