MaxCompute memperkenalkan proyek eksternal yang dipetakan ke katalog Data Lake Formation (DLF), memungkinkan akses real-time ke metadata dan akses baca/tulis ke data yang dikelola DLF di Object Storage Service (OSS). DLF mengelola izin, dan pemetaan data lake tingkat katalog ini mendukung kolaborasi multi-engine berbasis Paimon.
Lingkup
Fitur ini sedang dalam tahap private preview dan tersedia di MaxCompute berdasarkan undangan.
-
MaxCompute hanya mendukung tabel Paimon yang disimpan di OSS yang dikelola DLF.
-
MaxCompute tidak mendukung penulisan data ke tabel bucket dinamis atau tabel cross-partition menggunakan
INSERT INTOatauINSERT OVERWRITE. -
Anda tidak dapat menggunakan operasi
SHOW TABLESpada tabel cross-partition yang menggunakan bucket tetap dan kunci primernya tidak mencakup kunci partisi. -
Evolusi skema dan operasi partisi tidak didukung untuk tabel dalam proyek eksternal.
-
Operasi resource dan fungsi tidak didukung.
-
Anda tidak dapat menggunakan tabel Paimon sebagai sumber data untuk integrasi data di DataWorks.
Pemetaan tipe data
Untuk informasi lebih lanjut tentang tipe data MaxCompute, lihat Tipe Data (Versi 1.0) dan Tipe Data (Versi 2.0).
|
Tipe data Paimon |
Tipe data MaxCompute 2.0 |
Dukungan baca/tulis |
Deskripsi |
|
TINYINT |
TINYINT |
|
Bilangan bulat bertanda 8-bit. |
|
SMALLINT |
SMALLINT |
|
Bilangan bulat bertanda 16-bit. |
|
INT |
INT |
|
Bilangan bulat bertanda 32-bit. |
|
BIGINT |
BIGINT |
|
Bilangan bulat bertanda 64-bit. |
|
BINARY(MAX_LENGTH) |
BINARY |
|
Tipe data biner. Panjang maksimum saat ini adalah 8 MB. |
|
FLOAT |
FLOAT |
|
Bilangan titik mengambang biner 32-bit. |
|
DOUBLE |
DOUBLE |
|
Bilangan titik mengambang biner 64-bit. |
|
DECIMAL(precision,scale) |
DECIMAL(precision,scale) |
|
Tipe numerik desimal eksak. Nilai default adalah
|
|
VARCHAR(n) |
VARCHAR(n) |
|
Tipe karakter panjang variabel. n menentukan panjang dan berkisar antara 1 hingga 65.535. |
|
CHAR(n) |
CHAR(n) |
|
Tipe karakter panjang tetap. n menentukan panjang dan berkisar antara 1 hingga 255. |
|
VARCHAR(MAX_LENGTH) |
STRING |
|
Tipe string. Panjang maksimum saat ini adalah 8 MB. |
|
DATE |
DATE |
|
Tipe tanggal. Formatnya adalah |
|
TIME, TIME(p) |
Tidak didukung |
|
Tipe data TIME Paimon merepresentasikan waktu tanpa zona waktu, terdiri atas jam, menit, dan detik, dengan presisi nanodetik. TIME(p) menentukan presisi pecahan detik dari 0 hingga 9. Nilai default adalah 0. Tidak ada tipe yang sesuai di MaxCompute. |
|
TIMESTAMP, TIMESTAMP(p) |
TIMESTAMP_NTZ |
|
Tipe timestamp tanpa zona waktu yang akurat hingga nanodetik. Untuk membaca tipe data ini, Anda harus menonaktifkan native JNI bridge dengan menjalankan perintah berikut: |
|
TIMESTAMP WITH LOCAL TIME_ZONE(9) |
TIMESTAMP |
|
|
|
TIMESTAMP WITH LOCAL TIME_ZONE(9) |
DATETIME |
|
Tipe timestamp yang akurat hingga nanodetik. Formatnya adalah |
|
BOOLEAN |
BOOLEAN |
|
Tipe BOOLEAN. |
|
ARRAY |
ARRAY |
|
Tipe kompleks. |
|
MAP |
MAP |
|
Tipe kompleks. |
|
ROW |
STRUCT |
|
Tipe kompleks. |
|
MULTISET<t> |
Tidak didukung |
|
Tidak ada tipe yang sesuai di MaxCompute. |
|
VARBINARY, VARBINARY(n), BYTES |
BINARY |
|
Tipe data string biner panjang variabel. |
Prosedur
Langkah 1: Berikan izin
Berikan izin kepada Pengguna RAM
Jika Anda menggunakan Pengguna RAM, pastikan kebijakan izin berikut dilampirkan. Untuk informasi lebih lanjut tentang cara memberikan izin, lihat Mengelola izin untuk Pengguna RAM.
-
AliyunRAMFullAccess: Jika Pengguna RAM tidak memiliki izin ini, Akun Alibaba Cloud harus memberikannya.
-
AliyunMaxComputeFullAccess: Izin ini diperlukan untuk membuat sumber data eksternal dan proyek eksternal.
-
AliyunDLFReadOnlyAccess: Izin ini diperlukan untuk membuat proyek eksternal. Anda memerlukan kebijakan izin ini karena pembuatan proyek eksternal Paimon_DLF memerlukan izin List pada katalog DLF.
Otorisasi dan aktifkan DLF
-
Otorisasi akses sumber daya cloud
Saat pertama kali menggunakan Data Lake Formation (DLF), Anda harus mengotorisasi layanan tersebut untuk mengakses sumber daya cloud terkait.
Login ke Konsol Data Lake Formation (DLF), lalu pilih wilayah di pojok kiri atas.
Di sebelah kanan Permissions to access cloud resources are granted., klik Authorize.
-
Aktifkan Data Lake Formation
Pilih wilayah. MaxCompute dan DLF harus dideploy di wilayah yang sama. Sebelum menggunakan DLF, aktifkan layanan tersebut di wilayah target.
Di sebelah kanan DLF is activated., klik Activate.
Berikan izin data DLF kepada MaxCompute
Untuk mengizinkan MaxCompute mengakses data Paimon_DLF menggunakan sumber data eksternal dan proyek eksternal, Anda harus terlebih dahulu memberikan izin data DLF yang diperlukan kepada akun akses MaxCompute.
Untuk menggunakan identitas pelaksana tugas, Anda harus memberikan peran terkait layanan untuk MaxCompute agar dapat mengakses DLF. Saat MaxCompute mengakses DLF, identitas pelaksana tugas diteruskan ke DLF. Kedua layanan tersebut kemudian menerapkan izin yang diberikan dalam sistem masing-masing. Oleh karena itu, Anda harus terlebih dahulu membuat peran terkait layanan ini dan memberikan izin yang diperlukan. Untuk melakukannya, ikuti langkah-langkah berikut:
-
Login ke Konsol RAM.
-
Di panel navigasi kiri, pilih .
-
Di halaman Roles, klik Create Role.
-
Di pojok kanan atas halaman Create Role, klik Create Service Linked Role.
-
Di halaman Create Service Linked Role, pilih
AliyunServiceRoleForMaxComputeLakehouseuntuk Select Service, lalu klik Create Service Linked Role.Jika muncul pesan bahwa peran tersebut sudah ada, Anda dapat mengabaikannya.
Izin
-
Izin control plane: Izin ini diperiksa saat Anda melakukan operasi di Konsol MaxCompute, terutama saat membuat proyek eksternal MaxCompute yang terikat ke katalog DLF.
Izin ini dikelola oleh Resource Access Management (RAM). Gunakan Akun Alibaba Cloud Anda untuk login ke Konsol RAM guna mengonfigurasi izin ini. Untuk informasi lebih lanjut, lihat Mengelola izin untuk Pengguna RAM.
-
Izin data plane: Izin ini diperiksa saat Anda membaca atau menulis ke tabel Paimon setelah login ke proyek eksternal yang telah dibuat. Ini biasanya terjadi saat Anda membuat, memelihara, atau menggunakan skema, tabel, atau sumber daya lain dalam katalog DLF yang terikat dengan menjalankan pernyataan SQL di MaxCompute.
Izin ini dikelola di Konsol DLF. Gunakan Akun Alibaba Cloud Anda untuk login ke Konsol DLF guna mengonfigurasi izin ini. Untuk informasi lebih lanjut, lihat Memberikan izin kepada Pengguna RAM.
Langkah 2: Buat sumber data eksternal Paimon_DLF
-
Login ke Konsol MaxCompute, lalu pilih wilayah di pojok kiri atas.
-
Di panel navigasi kiri, pilih .
-
Di halaman External Data Source, klik Create External Data Source.
-
Di kotak dialog Create External Data Source, konfigurasikan parameter. Tabel berikut menjelaskan parameter tersebut.
Parameter
Wajib
Deskripsi
External Data Source Type
Wajib
Pilih Paimon_DLF.
External Data Source Name
Wajib
Tentukan nama kustom yang memenuhi persyaratan berikut:
-
Harus dimulai dengan huruf dan hanya boleh berisi huruf kecil, angka, dan garis bawah (_).
-
Panjang maksimum 128 karakter.
Contoh:
paimon_dlf.Description
Opsional
Masukkan deskripsi sesuai kebutuhan.
Region
Wajib
Default ke wilayah saat ini.
Authentication and Authorization
Wajib
Default ke peran RAM Alibaba Cloud.
Service-linked Role
Wajib
Parameter ini dihasilkan secara otomatis.
Endpoint
Wajib
Parameter ini dihasilkan secara otomatis. Untuk wilayah China (Hangzhou), endpoint-nya adalah
cn-hangzhou-intranet.dlf.aliyuncs.com.Foreign Server Supplemental Properties
Opsional
Properti tambahan untuk sumber data eksternal. Setelah Anda menentukan properti ini, tugas yang menggunakan sumber data eksternal ini dapat mengakses sistem sumber sebagaimana didefinisikan oleh properti tersebut.
CatatanDaftar parameter yang didukung diperbarui seiring perkembangan kemampuan produk. Untuk informasi terbaru, rujuk dokumentasi resmi.
-
-
Klik OK untuk membuat sumber data eksternal.
-
Di halaman External Data Source, temukan sumber data tersebut dan klik Details di kolom Actions untuk melihat detailnya.
Langkah 3: Buat proyek eksternal
-
Login ke Konsol MaxCompute, lalu pilih wilayah di pojok kiri atas.
-
Di panel navigasi kiri, pilih .
-
Di tab External Project, klik Create Project.
-
Di kotak dialog Create Project, konfigurasikan pengaturan dan klik OK.
Parameter
Wajib
Deskripsi
Project Type
Wajib
Default ke proyek eksternal.
Region
Wajib
Default ke wilayah saat ini dan tidak dapat diubah.
Project Name (Globally Unique)
Wajib
Nama harus dimulai dengan huruf, terdiri dari 3 hingga 28 karakter, dan hanya boleh berisi huruf, angka, dan garis bawah (_).
MaxCompute Foreign Server Type
Opsional
Default ke Paimon_DLF.
MaxCompute Foreign Server
Opsional
-
Use Existing: Daftar sumber data eksternal yang ada akan muncul.
-
Create Foreign Server: Anda dapat membuat dan menggunakan sumber data eksternal baru.
MaxCompute Foreign Server Name
Wajib
-
Jika Anda memilih untuk menggunakan sumber data yang ada, pilih namanya dari daftar drop-down.
-
Jika Anda memilih untuk membuat sumber data eksternal baru, namanya akan digunakan secara otomatis.
Data Catalog
Wajib
Katalog data DLF.
Billing Method
Wajib
Pilih Subscription atau Pay-as-you-go.
Default Quota
Wajib
Pilih kuota yang sudah ada.
Description
Opsional
Masukkan deskripsi kustom untuk proyek tersebut.
-
Langkah 4: Akses sumber data menggunakan SQL
-
Login ke proyek eksternal menggunakan tool koneksi.
Contoh berikut menunjukkan cara menjalankan SQL di node SQL DataWorks dalam ruang kerja.
-
Login ke Konsol DataWorks, lalu pilih wilayah di pojok kiri atas.
-
Di panel navigasi kiri, pilih Workspace.
-
Di halaman Workspaces, klik Create Workspace atau klik nama ruang kerja target yang sudah ada.
-
Di halaman Workspace Details, klik Computing Resource di panel navigasi kiri.
-
Di halaman Computing Resource, klik Associate Computing Resources, lalu pilih MaxCompute.
-
Konfigurasikan Basic Information untuk Associate MaxCompute Computing Resource.
Untuk parameter proyek MaxCompute, pilih proyek eksternal.
-
-
Daftar skema dalam proyek eksternal.
-- Aktifkan sintaks skema pada tingkat sesi. SET odps.namespace.schema=true; SHOW schemas; -- Contoh hasil: ID = 20250919****am4qb default system OK -
Daftar tabel dalam skema di proyek eksternal.
Jika Anda perlu mengakses tabel dari proyek produksi eksternal di lingkungan saat ini, tambahkan
use external_project_pro;sebelum semua pernyataan SQL Anda.-- <schema_name> adalah nama skema yang ditampilkan oleh perintah SHOW schemas. SET odps.namespace.schema=true; USE schema <schema_name>; SHOW tables; -- Contoh hasil: ID = 20250919****am4qb acs:ram::<uid>:root emp OK -
Buat skema dalam proyek eksternal.
-- Dalam contoh ini, schema_name adalah schema_demo_test. CREATE schema <schema_name>; -
Gunakan skema yang baru dibuat.
USE schema <schema_name>; -
Buat tabel dalam skema dan masukkan data.
Jika Anda login sebagai Pengguna RAM, Anda harus memiliki izin pada katalog DLF untuk operasi ini. Untuk informasi tentang cara memberikan izin, lihat Manajemen otorisasi data.
-
Format perintah:
-- Buat tabel. CREATE TABLE [IF NOT EXISTS] <table_name> ( <col_name> <data_type>, ... ) [COMMENT <table_comment>] [PARTITIONED BY (<col_name> <data_type>, ...)] ; -- Masukkan data. INSERT {INTO|OVERWRITE} TABLE <table_name> [PARTITION (<pt_spec>)] [(<col_name> [,<col_name> ...])] <select_statement> FROM <from_statement> -
Contoh:
CatatanSaat Anda menulis data ke tabel sumber Paimon, nilai TIMESTAMP dengan presisi lebih rendah dipotong: presisi 0–3 dipotong menjadi milidetik (3 tempat desimal), 4–6 menjadi mikrodetik (6 tempat desimal), dan 7–9 menjadi nanodetik (9 tempat desimal).
CREATE TABLE schema_table(id int,name string); INSERT INTO schema_table VALUES (101,'Zhang San'),(102,'Li Si'); -- Kueri tabel schema_table. SELECT * FROM schema_table; -- Contoh hasil: +------------+------------+ | id | name | +------------+------------+ | 101 | Zhang San | | 102 | Li Si | +------------+------------+
-
-
Beralih ke skema default yang sudah ada.
use schema default; SHOW tables; -- Contoh hasil: ID = 20250919*******yg5 acs:ram::<uid>:root emp acs:ram::<uid>:root emp_detail acs:ram::<uid>:root test_table OK -- Baca data dari tabel. SELECT * FROM test_table; -- Contoh hasil: +------------+------------+ | id | name | +------------+------------+ | 101 | Zhang San | | 102 | Li Si | +------------+------------+ -- Tulis data ke tabel dan periksa apakah data berhasil ditulis. INSERT INTO test_table VALUES (103,'Wang Wu'); SELECT * FROM test_table; -- Contoh hasil: +------------+------------+ | id | name | +------------+------------+ | 101 | Zhang San | | 102 | Li Si | | 103 | Wang Wu | +------------+------------+
Kesalahan umum
Masalah 1: Kesalahan saat membuat proyek eksternal
Gejala: Saat membuat proyek eksternal baru, muncul kesalahan "You are not authorized to perform this action."
Detail kesalahan mencantumkan kode kesalahan NoMCPermission.
Solusi:
-
Jika Anda adalah Pengguna RAM, verifikasi bahwa izin
AliyunMaxComputeFullAccesstelah diberikan kepada Pengguna RAM tersebut. Untuk informasi lebih lanjut, lihat prosedur terkait di Langkah 1. -
Operasi ini memerlukan pemilihan katalog dari Data Lake Formation (DLF). Pastikan izin DLF yang diperlukan telah diberikan. Untuk informasi lebih lanjut, lihat prosedur terkait di Langkah 1.
Masalah 2: Kesalahan show tables di skema default
Gejala: Saat menjalankan show tables di skema default proyek eksternal, muncul kesalahan "Forbidden:User acs: ram: :<uid>:user/** doesn't have privilege LIST on DATABASE default".
Solusi:
-
Login ke Konsol Data Lake Formation (DLF), lalu pilih wilayah di pojok kiri atas.
-
Di panel navigasi kiri, pilih System & Security.
-
Di tab , refresh untuk memeriksa apakah RAM user saat ini sudah ada.
-
Jika ada, berikan izin kepada RAM user tersebut di .
Masalah 3: Kesalahan "invalid database operations on two-tier"
Gejala: Saat menjalankan show schemas di proyek eksternal, muncul kesalahan "invalid database operations on two-tier".
Solusi:
-
Verifikasi bahwa proyek saat ini adalah proyek eksternal.
-
Jika Anda menggunakan node SQL DataWorks, klik Debugging Configuration di panel kanan dan verifikasi bahwa sumber daya komputasi yang terkait adalah proyek eksternal.
-
Jika Anda menggunakan analisis SQL di DataWorks, klik Data Source di pojok kanan atas dan verifikasi bahwa sumber data yang terkait adalah proyek eksternal.
-
Jika Anda menggunakan analisis SQL di MaxCompute, klik Execution Configuration di panel kanan dan verifikasi bahwa proyek yang dipilih untuk sumber daya komputasi adalah proyek eksternal.
-
Jika Anda menggunakan odpscmd, periksa file odps_config.ini dan verifikasi bahwa nilai parameter
project_nameadalah nama proyek eksternal.
-
-
Setelah memastikan Anda menggunakan proyek eksternal, pilih dan jalankan pernyataan SQL berikut secara bersamaan.
-- Aktifkan sintaks skema pada tingkat sesi. SET odps.namespace.schema=true; SHOW schemas;
Masalah 4: show schemas hanya mengembalikan skema default
Gejala: Saat menjalankan perintah show schemas di proyek eksternal, hanya skema default yang dikembalikan.
Solusi:
-
Verifikasi bahwa proyek saat ini adalah proyek eksternal.
-
Jika Anda menggunakan node SQL DataWorks, klik Debugging Configuration di panel kanan dan verifikasi bahwa sumber daya komputasi yang terkait adalah proyek eksternal.
-
Jika Anda menggunakan analisis SQL di DataWorks, klik Data Source di pojok kanan atas dan verifikasi bahwa sumber data yang terkait adalah proyek eksternal.
-
Jika Anda menggunakan analisis SQL di MaxCompute, klik Execution Configuration di panel kanan dan verifikasi bahwa proyek yang dipilih untuk sumber daya komputasi adalah proyek eksternal.
-
Jika Anda menggunakan odpscmd, periksa file odps_config.ini dan verifikasi bahwa nilai parameter
project_nameadalah nama proyek eksternal.
-
-
Setelah memastikan Anda menggunakan proyek eksternal, login ke Konsol Data Lake Formation (DLF) dan periksa apakah terdapat database lain di katalog yang terikat ke proyek eksternal tersebut.
-
Jika perintah
show schemasmasih tidak mengembalikan database yang diharapkan setelah melakukan pemeriksaan pada langkah 1 dan 2, kirimkan tiket untuk bantuan.
Masalah 5: Kesalahan "You should use dynamic bucket..."
Gejala: Saat menjalankan show tables di proyek eksternal, muncul kesalahan berikut: ODPS-0110005: com.aliyun.odps.meta.exception.MetaException: com.aliyun.odps.common.table.na.NativeException: common/table/jni/utils/jni_helper.cpp(79): UnretryableException: Common table connector exception - ExceptionType: java.lang.IllegalArgumentException - Message: You should use dynamic bucket (bucket = -1) mode in cross partition update case (Primary key constraint [sending_time, symbol, sequence_number] not include all partition fields [pt]).[pt])
Solusi:
Kesalahan ini terjadi karena MaxCompute saat ini tidak mendukung tabel kunci primer cross-partition dengan bucket tetap. Akibatnya, perintah show tables gagal.
Sebagai solusi sementara, hapus tabel kunci primer cross-partition yang tidak didukung di Konsol Data Lake Formation (DLF).
Masalah 6: Kesalahan "Can't set default schema..."
Gejala: Saat menjalankan perintah show tables atau show schemas, muncul kesalahan "FAILED: Can't set default schema if odps.namespace.schema is false".
Solusi:
-
Jalankan perintah
SET odps.namespace.schema=true;sebelum pernyataan SQL lainnya untuk mengaktifkan sintaks skema pada tingkat sesi. -
Jika kesalahan tetap muncul, verifikasi urutan perintah. Untuk membaca tabel dari proyek eksternal lain, gunakan urutan perintah berikut:
USE external_project; SET odps.namespace.schema=true; USE schema schema_name; SHOW tables;