Sumber data MaxCompute berfungsi sebagai pusat data dan menyediakan saluran dua arah untuk membaca serta menulis data ke MaxCompute.
Fitur
Sumber data MaxCompute di DataWorks dapat menggunakan alamat Tunnel Endpoint untuk mengakses layanan Tunnel dari proyek MaxCompute, memungkinkan sinkronisasi data melalui unggahan dan unduhan. Penggunaan layanan Tunnel untuk unggahan dan unduhan melibatkan operasi DownloadTable.
Untuk sumber data MaxCompute yang dibuat setelah 11 Desember 2023, jika layanan DataWorks berada di wilayah yang berbeda dari proyek MaxCompute yang ingin diakses, Anda tidak dapat langsung melakukan sinkronisasi data dari proyek tersebut menggunakan alamat Tunnel Endpoint. Dalam skenario ini, Anda harus membeli instans Cloud Enterprise Network (CEN) untuk menghubungkan jaringan layanan DataWorks dan proyek MaxCompute. Setelah jaringan terhubung, Anda dapat melakukan sinkronisasi data cross-region. Untuk informasi lebih lanjut tentang CEN dan operasi terkaitnya, lihat Cloud Enterprise Network.
Baca offline
MaxCompute Reader mendukung pembacaan dari tabel partisi dan tabel standar, tetapi tidak mendukung pembacaan dari virtual view atau sinkronisasi tabel eksternal.
Saat melakukan pembacaan offline dari tabel partisi MaxCompute, Anda tidak dapat langsung memetakan bidang partisi. Untuk menyinkronkan nilai bidang partisi, tambahkan bidang kustom, masukkan nama partisi secara manual, lalu lakukan pemetaan bidang.
Anda dapat menentukan partisi menggunakan parameter penjadwalan untuk penggantian otomatis, yang berguna dalam skenario penyinkronan partisi berdasarkan waktu penjadwalan.
Sebagai contoh, pertimbangkan tabel partisi bernama t0 dengan bidang id dan name. Partisi hash-nya adalah pt, dan subpartisinya adalah ds. Untuk membaca data dari partisi dengan pt=<data timestamp> dan ds=hangzhou, tentukan nilai partisi sebagai pt=${parameter penjadwalan} dan ds=hangzhou dalam konfigurasi sumber data. Kemudian, petakan bidang id dan name selama konfigurasi pemetaan bidang.
Anda dapat menulis bidang partisi ke tabel target dengan menambahkannya sebagai bidang kustom.
MaxCompute Reader mendukung penyaringan data menggunakan klausa WHERE.
Tulis offline
MaxCompute Writer tidak mendukung tipe VARCHAR jika data berisi nilai null.
Jika Anda menulis data ke
DeltaTable, atur Visible After Sync ke Yes. Jika tidak, tugas akan gagal ketika konkurensi lebih besar dari 1.
Tulis real-time
Tugas sinkronisasi data real-time mendukung kelompok sumber daya arsitektur tanpa server (disarankan) dan grup sumber daya eksklusif untuk Integrasi Data.
Tugas sinkronisasi data real-time tidak mendukung tabel tanpa primary key.
Saat melakukan sinkronisasi real-time ke sumber data MaxCompute default (biasanya
odps_first), AccessKey (AK) temporary digunakan secara default. AK temporary ini kedaluwarsa setelah tujuh hari, sehingga menyebabkan tugas gagal. Platform akan secara otomatis memulai ulang tugas saat mendeteksi kegagalan akibat AK temporary yang kedaluwarsa. Jika Anda telah mengonfigurasi peringatan pemantauan untuk jenis kegagalan ini, Anda akan menerima notifikasi.Untuk tugas sinkronisasi real-time satu klik ke MaxCompute, Anda hanya dapat mengkueri data historis lengkap pada hari konfigurasi. Data inkremental hanya dapat dikueri di MaxCompute setelah proses merge selesai pada hari berikutnya.
Tugas sinkronisasi real-time satu klik ke MaxCompute menghasilkan partisi penuh setiap hari. Untuk mencegah konsumsi sumber daya penyimpanan yang berlebihan, tabel MaxCompute yang dibuat otomatis oleh solusi ini memiliki siklus hidup default selama 30 hari. Jika durasi ini tidak sesuai dengan kebutuhan bisnis Anda, Anda dapat mengklik nama tabel MaxCompute selama konfigurasi tugas untuk mengubah siklus hidupnya.
Integrasi Data menggunakan saluran data mesin MaxCompute untuk unggahan dan unduhan data. Untuk detail mengenai Service-Level Agreement (SLA) saluran data, lihat Data Transmission Service (Upload) Scenarios and Tools. Anda harus mengevaluasi solusi sinkronisasi data Anda berdasarkan SLA saluran data mesin MaxCompute.
Untuk sinkronisasi real-time satu klik ke MaxCompute dalam mode instans, grup sumber daya eksklusif untuk Integrasi Data harus memiliki minimal 8 vCPU dan memori 16 GB.
Hanya sumber data MaxCompute yang dibuat pengguna di wilayah yang sama dengan ruang kerja saat ini yang didukung. Anda dapat berhasil menghubungkan ke proyek MaxCompute cross-region saat menguji konektivitas sumber data. Namun, saat tugas sinkronisasi dijalankan, terjadi error "engine not found" pada fase pembuatan tabel di MaxCompute.
Ketika MaxCompute menjadi tujuan sinkronisasi database lengkap, metode sinkronisasi yang didukung bergantung pada tipe tabel. Untuk tabel standar, hanya sinkronisasi penuh dan inkremental (near real-time) seluruh database yang didukung. Untuk Delta Table, baik sinkronisasi real-time maupun sinkronisasi penuh dan inkremental (near real-time) seluruh database didukung.
CatatanSaat menggunakan sumber data MaxCompute yang dibuat pengguna, proyek DataWorks tetap harus disambungkan ke mesin MaxCompute. Jika tidak, Anda tidak dapat membuat node SQL MaxCompute, sehingga pembuatan node 'done' untuk sinkronisasi penuh akan gagal.
Catatan
Jika suatu kolom di tabel target tidak dipetakan ke kolom sumber, nilainya akan diatur ke null setelah tugas sinkronisasi selesai, bahkan jika nilai default telah ditentukan untuk kolom target saat tabel dibuat.
Tipe bidang yang didukung
Tipe data MaxCompute 1.0, MaxCompute 2.0, dan tipe data yang kompatibel dengan Hive didukung. Bagian berikut menjelaskan tipe bidang yang didukung untuk setiap versi tipe data.
Bidang yang didukung untuk tipe data 1.0
Tipe bidang | Baca offline | Tulis offline | Penulisan real-time |
BIGINT | Didukung | Dukungan | Didukung |
DOUBLE | Dukungan | Didukung | Dukungan |
DECIMAL | Bantuan dan Dukungan | Dukungan | Didukung |
STRING | Didukung | Didukung | Didukung |
DATETIME | Didukung | Didukung | Didukung |
BOOLEAN | Didukung | Didukung | Didukung |
ARRAY | Didukung | Didukung | Didukung |
MAP | Didukung | Didukung | Dukungan |
STRUCT | Didukung | Didukung | Didukung |
Bidang yang didukung untuk tipe data 2.0 dan tipe data kompatibel Hive
Tipe bidang | Baca offline (MaxCompute Reader) | Tulis offline (MaxCompute Writer) | Penulisan real-time |
TINYINT | Didukung | Didukung | Didukung |
SMALLINT | Didukung | Didukung | Didukung |
INT | Didukung | Didukung | Didukung |
BIGINT | Dukungan | Didukung | Didukung |
BINARY | Dukungan | Didukung | Didukung |
FLOAT | Didukung | Didukung | Didukung |
DOUBLE | Didukung | Didukung | Dukungan |
DECIMAL(pecision,scale) | Didukung | Didukung | Didukung |
VARCHAR(n) | Didukung | Didukung | Didukung |
CHAR(n) | Tidak didukung | Didukung | Didukung |
STRING | Didukung | Didukung | Didukung |
DATE | Didukung | Didukung | Didukung |
DATETIME | Didukung | Didukung | Didukung |
TIMESTAMP | Didukung | Didukung | Didukung |
BOOLEAN | Didukung | Didukung | Didukung |
ARRAY | Didukung | Didukung | Didukung |
MAP | Didukung | Didukung | Didukung |
STRUCT | Didukung | Didukung | Didukung |
Pemetaan tipe data
Tabel berikut mencantumkan pemetaan tipe data untuk MaxCompute Reader.
Kategori tipe | Tipe Integrasi Data | Tipe data database |
Integer | LONG | BIGINT, INT, TINYINT, dan SMALLINT |
Boolean | BOOLEAN | BOOLEAN |
Tanggal dan waktu | DATE | DATETIME, TIMESTAMP, dan DATE |
Bilangan pecahan | DOUBLE | FLOAT, DOUBLE, dan DECIMAL |
Biner | BYTES | BINARY |
Kompleks | STRING | ARRAY, MAP, dan STRUCT |
Jika konversi data gagal atau data gagal ditulis ke sumber data tujuan, data tersebut dianggap sebagai dirty data. Anda dapat menanganinya menggunakan ambang batas catatan dirty data.
Prasyarat
Sebelum membaca atau menulis data ke tabel MaxCompute, aktifkan properti yang diperlukan.
Hubungkan ke MaxCompute dan aktifkan konfigurasi tingkat proyek
Masuk ke klien MaxCompute. Untuk informasi lebih lanjut, lihat Hubungkan menggunakan klien lokal (odpscmd).
Aktifkan konfigurasi tingkat proyek untuk MaxCompute. Pastikan Anda memiliki izin yang diperlukan. Anda dapat menggunakan akun Project Owner untuk melakukan operasi ini. Untuk informasi lebih lanjut tentang izin MaxCompute, lihat Perencanaan peran.
Aktifkan atribut ACID
Anda dapat menggunakan akun Project Owner untuk menjalankan perintah berikut pada klien guna mengaktifkan atribut 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 timestamp dari tipe data MaxCompute 2.0, Anda dapat menggunakan akun Project Owner untuk menjalankan perintah berikut pada klien guna mengaktifkan tipe data 2.0.
setproject odps.sql.type.system.odps2=true;(Opsional) Berikan izin
Saat menyambungkan resource komputasi MaxCompute ke ruang kerja, sumber data MaxCompute dibuat di DataWorks secara default. Anda dapat menggunakan sumber data ini untuk menyinkronkan data dalam ruang kerja saat ini. Untuk menyinkronkan data dari sumber data MaxCompute ini di ruang kerja lain, pastikan akun akses yang ditentukan untuk sumber data di ruang kerja lain memiliki izin akses ke proyek MaxCompute tersebut. Untuk informasi lebih lanjut tentang otorisasi cross-account, lihat Otorisasi cross-account (MaxCompute dan Hologres).
Buat sumber data MaxCompute
Sebelum mengembangkan tugas sinkronisasi data, Anda harus membuat sumber data MaxCompute untuk proyek MaxCompute Anda di DataWorks. Untuk informasi lebih lanjut tentang cara membuat sumber data MaxCompute, lihat Menyambungkan 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 memastikan keamanan data. 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 ini adalah sumber data default yang dibuat untuk mesin MaxCompute pertama yang disambungkan ke ruang kerja Anda sebelum fitur sumber data diperbarui. Jika Anda memilih sumber data ini untuk sinkronisasi data, Anda membaca atau menulis data ke proyek mesin MaxCompute tersebut.
Anda dapat melihat nama proyek MaxCompute yang digunakan oleh sumber data di halaman konfigurasi sumber data untuk memastikan dari atau ke proyek mana data dibaca atau ditulis. Untuk informasi lebih lanjut, lihat Manajemen Sumber Data.
Kembangkan tugas sinkronisasi data
Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Konfigurasikan tugas sinkronisasi offline untuk satu tabel
Untuk prosedurnya, lihat Konfigurasikan tugas di Antarmuka tanpa kode dan Konfigurasikan tugas di editor kode.
Untuk semua parameter dan demo skrip konfigurasi di editor kode, lihat Lampiran: Demo skrip dan deskripsi parameter.
Konfigurasikan tugas sinkronisasi real-time untuk satu tabel
Untuk prosedurnya, lihat Konfigurasikan tugas sinkronisasi real-time di Integrasi Data dan Konfigurasikan tugas sinkronisasi real-time di DataStudio.
Konfigurasikan tugas sinkronisasi seluruh database
Untuk prosedurnya, lihat Sinkronisasi offline seluruh database, Sinkronisasi real-time seluruh database, dan Sinkronisasi penuh dan inkremental (near real-time) seluruh database.
FAQ
Bagaimana cara menyinkronkan bidang partisi saat membaca data MaxCompute (ODPS)?
Bagaimana cara menyinkronkan data dari beberapa partisi saat membaca data MaxCompute (ODPS)?
Cara menyaring kolom, mengatur ulang kolom, dan mengisi nilai kosong di MaxCompute
Untuk FAQ lebih lanjut tentang Integrasi Data, lihat Integrasi Data.
Lampiran: Demo skrip dan deskripsi 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 Konfigurasikan tugas di editor kode. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.
Demo skrip Reader
Saat menjalankan tugas, hapus komentar dari kode berikut.
{
"type":"job",
"version":"2.0",
"steps":[
{
"stepType":"odps",// Nama plugin.
"parameter":{
"partition":[],// Partisi tempat data dibaca.
"isCompress":false,// Menentukan apakah data dikompresi.
"datasource":"",// Sumber data.
"column":[// Kolom tabel sumber.
"id"
],
"where": "",// Jika Anda menggunakan klausa WHERE untuk penyaringan data, masukkan klausa spesifiknya.
"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 laju data tidak dibatasi. Jika throttle diatur ke true, laju data dibatasi.
"concurrent":1, // Jumlah tugas konkuren.
"mbps":"12"// Batas laju data. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Untuk menentukan Tunnel Endpoint untuk MaxCompute, Anda dapat mengonfigurasi sumber data secara manual di editor kode. Ganti "datasource":"", pada contoh di atas dengan parameter sumber data spesifik. Kode berikut memberikan 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 | Deskripsi | Wajib | Nilai 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. Nama ini tidak peka huruf besar/kecil. | Ya | Tidak ada |
partition | Partisi tempat data dibaca.
Sebagai contoh, tabel partisi bernama test memiliki empat partisi: pt=1,ds=hangzhou, pt=1,ds=shanghai, pt=2,ds=hangzhou, dan pt=2,ds=beijing. Contoh berikut menunjukkan cara mengonfigurasi partisi untuk membaca data:
Anda juga dapat menetapkan kondisi untuk mengambil data partisi sesuai kebutuhan:
Catatan
| Wajib untuk tabel partisi. Jangan tentukan parameter ini untuk tabel standar. | Tidak ada |
column | Kolom yang akan dibaca dari tabel sumber MaxCompute. Sebagai contoh, tabel bernama test memiliki bidang id, name, dan age:
| Ya | Tidak ada |
enableWhere | Menentukan apakah menggunakan klausa WHERE untuk penyaringan data. | Tidak | false |
where | Jika Anda menggunakan klausa WHERE untuk penyaringan data, masukkan klausa spesifiknya. | Tidak | Tidak ada |
Demo skrip Writer
Kode berikut memberikan contoh konfigurasi skrip.
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"odps",// Nama plugin.
"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 adalah jumlah maksimum catatan dirty data yang diizinkan.
},
"speed":{
"throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku, dan laju data tidak dibatasi. Jika throttle diatur ke true, laju data dibatasi.
"concurrent":1, // Jumlah tugas konkuren.
"mbps":"12"// Batas laju data. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Untuk menentukan Tunnel Endpoint untuk MaxCompute, Anda dapat mengonfigurasi sumber data secara manual di editor kode. Ganti "datasource":"", pada contoh di atas dengan parameter sumber data spesifik. Kode berikut memberikan 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 | Deskripsi | Wajib | Nilai 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. Nama ini tidak peka huruf besar/kecil. Anda tidak dapat menentukan beberapa tabel. | Ya | Tidak ada |
partition | Informasi partisi untuk tabel tujuan. Anda harus menentukan partisi tingkat terendah. Sebagai contoh, untuk menulis data ke tabel partisi tiga tingkat, Anda harus menentukan partisi tingkat terendah, seperti
| Wajib untuk tabel partisi. Jangan tentukan parameter ini untuk tabel standar. | Tidak ada |
column | Daftar bidang yang akan diimpor. Untuk mengimpor semua bidang, Anda dapat mengatur parameter menjadi
| Ya | Tidak ada |
truncate | Konfigurasikan Karena pembersihan data dilakukan menggunakan SQL MaxCompute, yang tidak menjamin atomicity, opsi truncate bukan operasi atomik. Jika beberapa tugas secara bersamaan membersihkan partisi dalam Table atau Partition yang sama, masalah timing konkurensi dapat terjadi. Harap perhatikan hal ini. Untuk mencegah masalah tersebut, hindari menjalankan beberapa tugas DDL pada partisi yang sama secara bersamaan. Atau, buat partisi sebelum memulai beberapa tugas konkuren. | Ya | Tidak ada |
emptyAsNull | Menentukan apakah mengonversi string kosong menjadi NULL sebelum menulis. | Tidak | false |
consistencyCommit | Visible after sync.
| Tidak | false |