Sumber data MaxCompute berfungsi sebagai pusat data untuk membaca dan menulis data ke MaxCompute.
Fitur
Sumber data MaxCompute di DataWorks menggunakan alamat Tunnel Endpoint untuk mengakses layanan Tunnel dari proyek MaxCompute yang sesuai. Koneksi ini memungkinkan sinkronisasi data, seperti unggah dan unduh, melalui operasi DownloadTable.
Untuk sumber data MaxCompute yang dibuat setelah 11 Desember 2023, jika layanan DataWorks tempat sumber data berada berada di wilayah yang berbeda dari proyek MaxCompute target, Anda tidak dapat langsung melakukan sinkronisasi data menggunakan alamat endpoint Tunnel. Untuk melakukan sinkronisasi lintas wilayah dalam skenario ini, Anda harus terlebih dahulu menggunakan Cloud Enterprise Network (CEN) untuk menghubungkan jaringan kedua layanan tersebut. Untuk informasi lebih lanjut tentang CEN dan cara penggunaannya, lihat Apa itu CEN?.
Baca batch
MaxCompute Reader mendukung pembacaan data dari tabel partisi maupun non-partisi. Fitur ini tidak mendukung pembacaan data dari virtual view atau sinkronisasi tabel eksternal.
Saat melakukan pembacaan data batch dari tabel partisi MaxCompute, Anda tidak dapat langsung memetakan kolom partisi. Untuk menyinkronkan nilai kolom partisi, tambahkan kolom kustom dan masukkan nama partisi secara manual untuk pemetaan tersebut.
Anda dapat menentukan partisi dengan menggunakan parameter penjadwalan untuk substitusi otomatis. Ini berguna dalam skenario di mana Anda perlu menyinkronkan data dari partisi yang sesuai dengan waktu penjadwalan.
Sebagai contoh, pertimbangkan tabel
t0dengan kolomiddanname, partisi level-1pt, dan partisi level-2ds. Untuk membaca data dari partisipt=<Business Date>dands=hangzhou, Anda harus menentukan nilai partisi sebagaipt=${Scheduling Parameter}dands=hangzhousaat mengonfigurasi sumber data. Kemudian, Anda dapat memetakan kolomiddanname.Untuk menulis kolom partisi ke tabel tujuan, tambahkan kolom tersebut sebagai kolom kustom.
MaxCompute Reader mendukung penyaringan data menggunakan klausa WHERE.
Tulis batch
Ketika data berisi nilai null, MaxCompute Writer tidak mendukung tipe data VARCHAR.
Jika tabel tujuan adalah
DeltaTable, buka Advanced Configurations dan atur Visible After Sync ke Yes. Jika tidak, tugas akan gagal dalam skenario di mana konkurensi lebih besar dari 1.Menulis data ke tabel eksternal MaxCompute tidak didukung.
Jika kolom tujuan tidak dipetakan dari kolom sumber, nilainya akan menjadi null setelah sinkronisasi, menggantikan nilai default yang ditentukan saat pembuatan tabel.
Tulis real-time
Tugas sinkronisasi data real-time mendukung grup sumber daya arsitektur tanpa server.
Tabel tujuan untuk sinkronisasi real-time harus memiliki primary key.
Menulis data ke tabel eksternal MaxCompute tidak didukung.
Saat menyinkronkan data secara real-time ke sumber data MaxCompute default, yang biasanya
odps_first, Access Key (AK) temporary digunakan untuk sinkronisasi secara default. AK temporary ini secara otomatis kedaluwarsa setelah 7 hari, yang menyebabkan tugas gagal. Platform secara otomatis memulai ulang tugas ketika mendeteksi bahwa kegagalan disebabkan oleh AK temporary tersebut. Jika Anda telah mengonfigurasi peringatan pemantauan untuk tugas tersebut, Anda akan menerima pesan peringatan.Untuk tugas sinkronisasi real-time satu klik, data historis tersedia untuk kueri pada hari konfigurasi. Data inkremental tersedia setelah digabungkan pada hari berikutnya.
Tugas sinkronisasi real-time satu klik ke MaxCompute membuat partisi penuh setiap hari. Untuk mencegah konsumsi penyimpanan berlebihan, tabel MaxCompute yang dibuat secara otomatis memiliki siklus hidup default 30 hari. Jika durasi ini tidak memenuhi kebutuhan bisnis Anda, Anda dapat mengklik nama tabel MaxCompute selama konfigurasi tugas untuk mengubah siklus hidupnya.
Data Integration menggunakan saluran sinkronisasi data dari engine MaxCompute untuk unggah dan unduh data. Untuk informasi lebih lanjut tentang service level agreement (SLA) saluran ini, lihat Skenario dan alat unggah data. Anda harus mengevaluasi solusi sinkronisasi data Anda berdasarkan SLA saluran tersebut.
Untuk sinkronisasi real-time satu klik ke MaxCompute dalam mode instans, grup sumber daya eksklusif untuk Data Integration harus memiliki spesifikasi minimum 8-core 16 GB.
Anda hanya dapat menggunakan sumber data MaxCompute kustom yang berada di wilayah yang sama dengan ruang kerja saat ini. Untuk sumber data lintas wilayah, pengujian konektivitas mungkin berhasil, tetapi tugas sinkronisasi akan gagal selama fase pembuatan tabel di MaxCompute dengan error 'engine not found'.
Ketika MaxCompute berfungsi sebagai tujuan untuk sinkronisasi seluruh database, tabel standar hanya mendukung mode log inkremental dari sinkronisasi real-time seluruh database dan sinkronisasi full-incremental real-time satu klik. Sebaliknya, Delta Table mendukung kedua jenis sinkronisasi real-time seluruh database dan sinkronisasi full-incremental real-time satu klik.
CatatanSaat menggunakan sumber data MaxCompute kustom, proyek DataWorks masih harus dikaitkan dengan engine MaxCompute. Jika tidak, Anda tidak dapat membuat node SQL MaxCompute, yang pada gilirannya menyebabkan node penanda penyelesaian sinkronisasi penuh gagal.
Tipe data yang didukung
Tipe data MaxCompute 1.0, 2.0, dan tipe data yang kompatibel dengan Hive didukung. Bagian berikut menjelaskan tipe kolom yang didukung untuk setiap versi tipe data.
Tipe data 1.0
Type | Batch read | Batch write | Real-time write |
BIGINT | Supported | Supported | Supported |
DOUBLE | Supported | Supported | Supported |
DECIMAL | Supported | Supported | Supported |
STRING | Supported | Supported | Supported |
DATETIME | Supported | Supported | Supported |
BOOLEAN | Supported | Supported | Supported |
ARRAY | Supported | Supported | Supported |
MAP | Supported | Supported | Supported |
STRUCT | Supported | Supported | Supported |
Tipe data 2.0 dan tipe data kompatibel Hive
Type | Batch read | Batch write | Real-time write |
TINYINT | Supported | Supported | Supported |
SMALLINT | Supported | Supported | Supported |
INT | Supported | Supported | Supported |
BIGINT | Supported | Supported | Supported |
BINARY | Supported | Supported | Supported |
FLOAT | Supported | Supported | Supported |
DOUBLE | Supported | Supported | Supported |
DECIMAL(precision,scale) | Supported | Supported | Supported |
VARCHAR(n) | Supported | Supported | Supported |
CHAR(n) | Not supported | Supported | Supported |
STRING | Supported | Supported | Supported |
DATE | Supported | Supported | Supported |
DATETIME | Supported | Supported | Supported |
TIMESTAMP | Supported | Supported | Supported |
BOOLEAN | Supported | Supported | Supported |
ARRAY | Supported | Supported | Supported |
MAP | Supported | Supported | Supported |
STRUCT | Supported | Supported | Supported |
Pemetaan tipe data
Tabel berikut mencantumkan pemetaan tipe data untuk MaxCompute Reader.
Category | Data Integration type | Database type |
Integer | LONG | BIGINT, INT, TINYINT, dan SMALLINT |
Boolean | BOOLEAN | BOOLEAN |
Date and time | DATE | DATETIME, TIMESTAMP, dan DATE |
Floating-point | DOUBLE | FLOAT, DOUBLE, dan DECIMAL |
Binary | BYTES | BINARY |
Complex | STRING | ARRAY, MAP, dan STRUCT |
Jika konversi tipe data gagal atau data tidak dapat ditulis ke tujuan, data tersebut diklasifikasikan sebagai dirty data. Anda dapat menggunakan fitur ini bersamaan dengan ambang batas dirty data.
Prasyarat
Sebelum membaca data dari atau menulis data ke tabel MaxCompute, Anda mungkin perlu mengaktifkan properti tertentu.
Hubungkan ke MaxCompute dan aktifkan pengaturan proyek
Masuk ke klien MaxCompute. Untuk informasi lebih lanjut, lihat Hubungkan menggunakan klien lokal (odpscmd).
Aktifkan pengaturan tingkat proyek untuk MaxCompute. Pastikan Anda memiliki izin yang diperlukan. Anda dapat menggunakan akun yang memiliki role Project Owner untuk melakukan operasi ini. Untuk informasi lebih lanjut tentang izin MaxCompute, lihat Perencanaan role.
Aktifkan semantik ACID
Anda dapat menggunakan akun yang memiliki role Project Owner untuk menjalankan perintah berikut di klien guna mengaktifkan properti ACID. Untuk informasi lebih lanjut tentang semantik ACID di MaxCompute, lihat Semantik ACID.
setproject odps.sql.acid.table.enable=true;(Opsional) Aktifkan tipe data 2.0
Untuk menggunakan tipe data TIMESTAMP, Anda harus mengaktifkan tipe data MaxCompute 2.0. Jalankan perintah berikut menggunakan akun dengan role Project Owner:
setproject odps.sql.type.system.odps2=true;(Opsional) Berikan izin akun
Saat mengaitkan resource komputasi MaxCompute dengan ruang kerja, sumber data MaxCompute dibuat di DataWorks secara default. Anda dapat menggunakan sumber data ini untuk sinkronisasi data dalam ruang kerja saat ini. Untuk menggunakan sumber data ini dari ruang kerja yang berbeda, akun akses yang dikonfigurasi di ruang kerja lain harus memiliki izin yang diperlukan pada proyek MaxCompute asli. Untuk informasi tentang otorisasi cross-account, lihat Otorisasi cross-account (MaxCompute dan Hologres).
Buat sumber data MaxCompute
Sebelum mengembangkan tugas sinkronisasi data, Anda harus menambahkan proyek MaxCompute sebagai sumber data MaxCompute di DataWorks. Untuk petunjuknya, lihat Kaitkan resource komputasi MaxCompute.
Ruang kerja dalam mode standar mendukung isolasi sumber data. Anda dapat menambahkan dan mengisolasi sumber data untuk lingkungan pengembangan dan produksi guna melindungi data Anda. Untuk informasi lebih lanjut, lihat Isolasi sumber data di lingkungan pengembangan dan produksi.
Jika sumber data MaxCompute bernama odps_first di ruang kerja Anda tidak dibuat secara manual di halaman sumber data, maka sumber data tersebut dibuat secara default untuk engine MaxCompute pertama yang Anda kaitkan dengan ruang kerja sebelum versi baru sumber data dirilis. Saat memilih sumber data ini untuk sinkronisasi data, Anda membaca atau menulis data ke proyek engine MaxCompute tertentu tersebut.
Anda dapat melihat nama proyek MaxCompute yang digunakan sumber data di halaman konfigurasi sumber data untuk mengonfirmasi proyek akhir untuk operasi baca dan tulis. Untuk informasi lebih lanjut, lihat Manajemen sumber data.
Tugas sinkronisasi data
Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Sinkronisasi batch tabel tunggal
Untuk petunjuknya, lihat Gunakan Antarmuka tanpa kode dan Gunakan editor kode.
Untuk daftar lengkap parameter dan contoh kode untuk editor kode, lihat Lampiran: Kode dan parameter.
Sinkronisasi real-time tabel tunggal
Untuk petunjuknya, lihat Buat node sinkronisasi real-time untuk menyinkronkan data inkremental dari tabel tunggal dan Konfigurasi tugas sinkronisasi real-time di DataStudio.
Sinkronisasi seluruh database
Untuk petunjuknya, lihat tugas sinkronisasi batch seluruh database, Konfigurasi tugas sinkronisasi real-time seluruh database, dan sinkronisasi full-incremental real-time satu klik.
FAQ
Bagaimana cara menyinkronkan kolom partisi saat membaca data dari tabel MaxCompute (ODPS)?
Bagaimana MaxCompute menerapkan penyaringan kolom, pengubahan urutan kolom, dan pengisian null?
Apa yang perlu saya ketahui tentang konfigurasi partisi MaxCompute?
Untuk pertanyaan umum lainnya tentang Data Integration, lihat FAQ tentang Data Integration.
Lampiran: Kode dan 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
Saat menjalankan tugas, hapus komentar dari kode.
{
"type":"job",
"version":"2.0",
"steps":[
{
"stepType":"odps",// Nama plug-in.
"parameter":{
"partition":[],// Partisi tempat data dibaca.
"isCompress":false,// Menentukan apakah data dikompresi.
"datasource":"",// Sumber data.
"column":[// Kolom dari tabel sumber.
"id"
],
"where": "",// Konten klausa WHERE untuk penyaringan data.
"enableWhere":false,// Menentukan apakah menggunakan klausa WHERE untuk penyaringan data.
"table":""// Nama tabel.
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah catatan error.
},
"speed":{
"throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku, dan kecepatan sinkronisasi data tidak dibatasi. Jika throttle diatur ke true, kecepatan sinkronisasi data dibatasi.
"concurrent":1, // Jumlah thread konkuren.
"mbps":"12"// Kecepatan transmisi maksimum. Satuan MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Jika perlu menentukan Tunnel Endpoint untuk MaxCompute, Anda dapat mengonfigurasi sumber data secara manual di editor kode. Ganti "datasource":"", pada contoh di atas dengan parameter spesifik untuk sumber data. Berikut adalah contohnya.
"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":"*****", Parameter skrip Reader
Parameter | Description | Required | Default |
datasource | Nama sumber data. Anda dapat menambahkan sumber data di editor kode. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan. | Ya | Tidak ada |
table | Nama tabel sumber. Nilainya tidak peka huruf besar/kecil. | Ya | Tidak ada |
partition | Partisi tempat data dibaca.
Sebagai contoh, tabel partisi test berisi empat partisi: pt=1,ds=hangzhou, pt=1,ds=shanghai, pt=2,ds=hangzhou, dan pt=2,ds=beijing. Konfigurasi untuk membaca data dari partisi berbeda adalah sebagai berikut:
Anda juga dapat menetapkan kondisi untuk mengambil data dari partisi:
Catatan
| Parameter ini wajib untuk tabel partisi. Jangan konfigurasi parameter ini untuk tabel non-partisi. | Tidak ada |
column | Membaca informasi kolom dari tabel sumber MaxCompute. Sebagai contoh, kolom tabel test adalah id, name, dan age:
| Ya | Tidak ada |
enableWhere | Menentukan apakah menggunakan klausa WHERE untuk penyaringan data. | Tidak | false |
where | Konten klausa WHERE untuk penyaringan data. | Tidak | Tidak ada |
Contoh skrip Writer
Kode berikut memberikan contoh skrip.
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"odps",// Nama plug-in.
"parameter":{
"partition":"",// Informasi partisi.
"truncate":true,// Aturan pembersihan.
"compress":false,// Menentukan apakah data dikompresi.
"datasource":"odps_first",// Nama sumber data.
"column": [// Nama kolom sumber.
"id",
"name",
"age",
"sex",
"salary",
"interest"
],
"table":""// Nama tabel.
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah catatan error. Ini menentukan jumlah maksimum catatan dirty data yang dapat ditoleransi.
},
"speed":{
"throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku, dan kecepatan sinkronisasi data tidak dibatasi. Jika throttle diatur ke true, kecepatan sinkronisasi data dibatasi.
"concurrent":1, // Jumlah thread konkuren.
"mbps":"12"// Kecepatan transmisi maksimum. Satuan MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Jika perlu menentukan Tunnel Endpoint MaxCompute, Anda dapat mengonfigurasi sumber data secara manual di editor kode. Ganti "datasource":"", pada contoh di atas dengan parameter spesifik untuk sumber data. Berikut adalah contohnya.
"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":"**********", Parameter skrip Writer
Parameter | Description | Required | Default |
datasource | Nama sumber data. Anda dapat menambahkan sumber data di editor kode. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan. | Ya | Tidak ada |
table | Nama tabel tujuan. Nilainya tidak peka huruf besar/kecil. Anda hanya dapat menentukan satu tabel. | Ya | Tidak ada |
partition | Anda harus menentukan informasi partisi hingga level terakhir untuk menulis data ke tabel partisi. Misalnya, untuk menulis data ke tabel partisi tiga level, Anda harus menentukan partisi hingga level terakhir, seperti
| Parameter ini wajib untuk tabel partisi. Jangan konfigurasi parameter ini untuk tabel non-partisi. | Tidak ada |
column | Daftar kolom yang akan diimpor. Untuk mengimpor semua kolom, atur parameter ini ke
| Ya | Tidak ada |
truncate | Mengonfigurasi Opsi truncate bukan operasi atom karena menggunakan MaxCompute SQL untuk pembersihan data, dan MaxCompute SQL tidak menjamin atomicity. Perlu diperhatikan bahwa masalah konkurensi dapat terjadi jika beberapa tugas secara bersamaan mencoba membersihkan Table atau Partition yang sama. Untuk menghindari hal ini, jangan lakukan operasi DDL pada partisi yang sama dari beberapa tugas konkuren. Atau, buat partisi sebelum tugas konkuren dimulai. | Ya | Tidak ada |
emptyAsNull | Menentukan apakah mengonversi string kosong ke NULL sebelum menulis. | Tidak | false |
consistencyCommit | Visible after synchronization.
| Tidak | false |