MaxCompute memperkenalkan proyek eksternal untuk menyediakan akses real-time ke metadata dan data dengan memetakan ke katalog Data Lake Formation (DLF). Fitur ini mendelegasikan pengelolaan izin ke DLF, sehingga memungkinkan akses metadata serta operasi baca/tulis pada data yang disimpan di Object Storage Service (OSS) yang dikelola oleh DLF. Dengan memetakan seluruh data lake pada tingkat katalog, fitur ini memfasilitasi kolaborasi lintas engine berbasis Paimon. Proyek eksternal Paimon_DLF saat ini hanya tersedia berdasarkan undangan.
Catatan penggunaan
Format tabel: Hanya tabel Paimon yang disimpan di OSS yang dikelola oleh DLF yang didukung.
Batasan penulisan:
INSERT INTOdanINSERT OVERWRITEtidak didukung untuk tabel Dynamic Bucket atau tabel Cross Partition.Batasan kueri:
SHOW TABLEStidak mendukung tabel Cross Partition yang memiliki bucket tetap dan kunci primernya tidak mencakup kunci partisi.Proyek eksternal: Evolusi skema dan operasi partisi tidak didukung.
Batasan lainnya:
Operasi resource dan fungsi tidak didukung.
Anda tidak dapat menggunakan proyek eksternal sebagai sumber data untuk Data Integration di DataWorks.
Prosedur
Langkah 1: Konfigurasikan izin
Berikan izin kepada Pengguna RAM
Jika Anda adalah Pengguna RAM, pastikan kebijakan izin berikut dilampirkan. Untuk petunjuk menambahkan izin, lihat Berikan izin kepada Pengguna RAM.
AliyunRAMFullAccess: Jika Pengguna RAM tidak memiliki izin ini, Akun Alibaba Cloud harus memberikannya.
AliyunMaxComputeFullAccess: Diperlukan untuk membuat sumber data eksternal dan proyek eksternal.
AliyunDLFReadOnlyAccess: Diperlukan untuk membuat proyek eksternal. Kebijakan ini diperlukan karena pembuatan proyek eksternal Paimon_DLF membutuhkan izin List pada katalog DLF.
Otorisasi dan aktifkan DLF
Otorisasi akses ke sumber daya cloud
Sebelum menggunakan Data Lake Formation (DLF) untuk pertama kalinya, Anda harus mengotorisasi DLF untuk mengakses sumber daya cloud yang diperlukan.
Login ke Konsol Data Lake Formation (DLF) dan 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 berada di wilayah yang sama. Sebelum menggunakan DLF, Anda harus mengaktifkan layanan tersebut untuk memastikan ketersediaannya di wilayah target.
Klik Activate di sebelah kanan DLF is activated..
Berikan izin kepada akun MaxCompute
Untuk mengizinkan MaxCompute mengakses data dalam proyek eksternal Paimon_DLF, Anda harus memberikan izin data yang diperlukan di DLF kepada akun akses MaxCompute.
MaxCompute mengakses DLF menggunakan identitas pelaksana tugas. Identitas ini diteruskan ke DLF, yang kemudian memverifikasinya terhadap kebijakan izinnya. Untuk mengaktifkan proses ini, Anda harus terlebih dahulu membuat dan mengotorisasi peran terkait layanan untuk MaxCompute. Ikuti langkah-langkah berikut:
Login ke Konsol Resource Access Management (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, atur Select Service menjadi
AliyunServiceRoleForMaxComputeLakehousedan klik Create Service Linked Role.Jika muncul pesan bahwa peran tersebut sudah ada, artinya peran tersebut telah diotorisasi. Anda dapat mengabaikan pesan tersebut.
Izin
Izin control plane: Izin ini diperiksa selama operasi di Konsol MaxCompute, terutama saat Anda membuat proyek eksternal MaxCompute dan mengikat katalog DLF.
Izin ini dikelola oleh RAM. Akun Alibaba Cloud harus login ke Konsol RAM untuk mengonfigurasinya. Untuk detailnya, lihat Berikan izin kepada Pengguna RAM.
Izin data plane: Izin ini diperiksa saat Anda membaca atau menulis ke tabel Paimon setelah login ke proyek eksternal. Ini biasanya terjadi selama pembuatan, pemeliharaan, atau penggunaan skema, tabel, dan sumber daya lainnya dalam katalog DLF yang terikat, biasanya dieksekusi melalui SQL di MaxCompute.
Izin ini dikelola oleh DLF. Akun Alibaba Cloud harus login ke Konsol DLF untuk mengonfigurasinya. Untuk detailnya, lihat Berikan izin kepada Pengguna RAM.
Langkah 2: Buat sumber data eksternal Paimon_DLF
Login ke Konsol MaxCompute, dan 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
Ya
Pilih Paimon_DLF.
External Data Source Name
Ya
Nama kustom. Aturan penamaan:
Harus dimulai dengan huruf dan hanya boleh berisi huruf kecil, garis bawah (_), dan angka.
Tidak boleh melebihi 128 karakter.
Contoh:
paimon_dlf.Description
Tidak
Masukkan deskripsi sesuai kebutuhan.
Region
Ya
Wilayah saat ini dipilih secara default.
Authentication and authorization
Ya
Default ke peran RAM Alibaba Cloud.
Service-linked Role
Ya
Dibuat secara default.
Endpoint
Ya
自动生成,杭州地域为:
cn-hangzhou-intranet.dlf.aliyuncs.comForeign Server Supplemental Properties
Tidak
Properti tambahan untuk sumber data eksternal. Setelah Anda menentukannya, tugas yang menggunakan sumber data eksternal ini dapat mengakses sistem sumber sesuai dengan perilaku yang ditentukan.
CatatanParameter yang didukung akan dijelaskan secara rinci dalam dokumentasi mendatang seiring perkembangan kemampuan produk.
Klik Confirm untuk membuat sumber data eksternal.
Di halaman External Data Source, temukan sumber data target dan klik Details di kolom Actions.
Langkah 3: Buat proyek eksternal
Login ke Konsol MaxCompute, dan pilih wilayah di pojok kiri atas.
Di panel navigasi kiri, pilih .
Di tab External Project, klik Create Project.
Di kotak dialog Create Project, konfigurasikan informasi proyek sesuai petunjuk dan klik OK.
Parameter
Wajib
Deskripsi
Project Type
Ya
Default ke proyek eksternal.
Region
Ya
Wilayah saat ini dipilih secara default dan tidak dapat diubah.
Project Name (Globally Unique)
Ya
Harus dimulai dengan huruf dan berisi huruf, angka, serta garis bawah (_). Panjang nama harus antara 3 hingga 28 karakter.
MaxCompute Foreign Server Type
Tidak
Default ke Paimon_DLF.
MaxCompute Foreign Server
Tidak
Use Existing: Daftar sumber data eksternal yang telah dibuat sebelumnya akan muncul.
Create Foreign Server: Buat dan gunakan sumber data eksternal baru.
MaxCompute Foreign Server Name
Ya
Use Existing: Pilih nama sumber data eksternal yang telah dibuat sebelumnya dari daftar drop-down.
Create External Data Source: Nama sumber data eksternal baru akan digunakan.
Data Catalog
Ya
Katalog data DLF.
Billing Method
Ya
Subscription atau Pay-as-you-go.
Default Quota
Ya
Pilih Kuota yang sudah ada.
Description
Tidak
Deskripsi proyek kustom.
Langkah 4: Gunakan SQL untuk mengakses data
Karena proyek eksternal merupakan pemetaan ke sumber data, menghapus proyek eksternal tidak akan menghapus data apa pun dari sumber tersebut.
Namun, berbeda dengan tabel eksternal biasa, jika Anda menjalankan operasi DROP TABLE atau DROP SCHEMA di proyek eksternal, permintaan tersebut akan dikirim ke layanan peer. Hal ini akan menghapus permanen tabel atau database yang bersangkutan. Gunakan operasi DROP dengan hati-hati.
Pilih alat koneksi untuk login ke proyek eksternal.
Contoh berikut menunjukkan prosedurnya menggunakan node SQL DataStudio di ruang kerja DataWorks.
Login ke Konsol DataWorks dan pilih wilayah di pojok kiri atas.
Di panel navigasi kiri, klik 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 Resource, lalu pilih MaxCompute.
Konfigurasikan pengaturan di bagian Basic Information pada halaman Associate MaxCompute Compute Resource.
Untuk proyek MaxCompute, pilih proyek eksternal.
Daftar skema dalam proyek eksternal.
-- Aktifkan sintaks skema untuk sesi. SET odps.namespace.schema=true; SHOW schemas; -- Contoh output: ID = 20250919****am4qb default system OKDaftar tabel dalam skema di proyek eksternal.
Jika Anda perlu mengakses tabel dari proyek eksternal produksi di lingkungan saat ini, Anda perlu menambahkan
use externao_project_pro;sebelum semua pernyataan SQL.-- schema_name adalah nama skema yang dikembalikan oleh SHOW SCHEMAS di proyek eksternal. SET odps.namespace.schema=true; USE schema <schema_name>; SHOW tables; -- Contoh output: ID = 20250919****am4qb acs:ram::<uid>:root emp OKBuat skema baru di proyek eksternal.
-- Dalam contoh ini, schema_name adalah schema_demo_test. CREATE schema <schema_name>;Gunakan skema baru tersebut.
USE schema <schema_name>;Buat tabel dan masukkan data ke dalam skema.
Jika Anda login sebagai Pengguna RAM, operasi ini memerlukan izin pada katalog DLF. Untuk petunjuk otorisasi, lihat Kelola izin 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 menulis data ke tabel Paimon, nilai untuk tipe TIMESTAMP presisi rendah dipotong. Misalnya, nilai untuk tipe dengan presisi 0–3 dipotong menjadi 3 digit pecahan, tipe 4–6 dipotong menjadi 6 digit, dan tipe 7–9 dipotong menjadi 9 digit.
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 output: +------------+------------+ | id | name | +------------+------------+ | 101 | Zhang San | | 102 | Li Si | +------------+------------+
Beralih ke skema
defaultyang sudah ada.use schema default; SHOW tables; -- Contoh output: ID = 20250919*******yg5 acs:ram::<uid>:root emp acs:ram::<uid>:root emp_detail acs:ram::<uid>:root test_table OK -- Baca dari tabel. SELECT * FROM test_table; -- Contoh output: +------------+------------+ | id | name | +------------+------------+ | 101 | Zhang San | | 102 | Li Si | +------------+------------+ -- Tulis ke tabel dan verifikasi operasi tulis. INSERT INTO test_table VALUES (103,'Wang Wu'); SELECT * FROM test_table; -- Contoh output: +------------+------------+ | id | name | +------------+------------+ | 101 | Zhang San | | 102 | Li Si | | 103 | Wang Wu | +------------+------------+
Penerusan properti tabel Paimon
Untuk mengonfigurasi opsi khusus Paimon saat membuat tabel Paimon di proyek eksternal, tambahkan parameter yang sesuai ke klausa TBLPROPERTIES. Apache Paimon mencakup opsi konfigurasi inti tertentu.
Metode konfigurasi: Tambahkan parameter dengan awalan mcfed. ke daftar TBLPROPERTIES. Nama parameter harus konsisten dengan parameter native dari Paimon open-source.
Contoh
Atur jumlah bucket ke nilai lebih dari 0, dan tentukan kunci primer yang mencakup 'id' dan kolom kunci partisi untuk tabel eksternal Paimon.
Buat tabel dan konfigurasikan parameter tabel eksternal
-- Masuk ke proyek eksternal. Jika Anda sudah berada di dalamnya, Anda dapat melewati perintah ini. use <your external project>; -- Aktifkan sintaks skema untuk sesi. SET odps.namespace.schema=true; -- Pilih skema yang akan digunakan. use schema <your schema>; CREATE TABLE oss_extable_bucket_pk_pt_bucket ( id BIGINT, name STRING, dt STRING )tblproperties ( 'mcfed.bucket'='3', -- jumlah bucket 'mcfed.bucket-key'='id', -- kunci bucket, dapat dihilangkan jika kunci primer ada "mcfed.primary-key"="dt,id", -- kunci primer "mcfed.partition"="dt" -- bidang partisi );Masukkan data ke tabel eksternal
INSERT INTO oss_extable_bucket_pk_pt_bucket PARTITION (dt='2025-06-18') VALUES (1, 'Alice'),(2, 'Bob'); INSERT INTO oss_extable_bucket_pk_pt_bucket PARTITION (dt='2025-06-19') VALUES (3, 'Charlie'),(4, 'David'),(5, 'Eva');Kueri tabel eksternal
SELECT * FROM oss_extable_bucket_pk_pt_bucket; -- Contoh output: +------------+---------+------------+ | id | name | dt | +------------+---------+------------+ | 1 | Alice | 2025-06-18 | | 2 | Bob | 2025-06-18 | | 4 | David | 2025-06-19 | | 3 | Charlie | 2025-06-19 | | 5 | Eva | 2025-06-19 | +------------+---------+------------+Login ke Konsol Data Lake Formation (DLF) dan pilih wilayah di pojok kiri atas.
Lihat detail tabel yang dihasilkan di katalog:

FAQ
Kesalahan saat membuat proyek eksternal
Masalah: Saat membuat proyek eksternal, muncul pesan kesalahan "You are not authorized to perform this action".

Solusi:
Jika Anda adalah Pengguna RAM, pastikan terlebih dahulu bahwa Anda memiliki izin
AliyunMaxComputeFullAccess. Untuk informasi lebih lanjut, lihat Langkah 1.Karena proses ini melibatkan pemilihan katalog DLF, pastikan bahwa Anda memiliki izin DLF yang diperlukan. Untuk detailnya, lihat Langkah 1.
Kesalahan SHOW TABLES di skema default
Masalah: 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) dan pilih wilayah di pojok kiri atas.
Di panel navigasi kiri, pilih System & Security
Pada tab , muat ulang halaman untuk memverifikasi bahwa Pengguna RAM saat ini terdaftar.
Jika pengguna terdaftar, berikan izin kepada Pengguna RAM di bawah .
Kesalahan "invalid database operations on two-tier"
Masalah: Menjalankan SHOW SCHEMAS di proyek eksternal menghasilkan kesalahan "invalid database operations on two-tier".
Solusi:
Pertama, pastikan bahwa proyek saat ini adalah proyek eksternal.
Jika Anda menggunakan node SQL DataWorks, klik Debug Configuration di sebelah kanan dan periksa apakah sumber daya komputasi yang terkait adalah proyek eksternal.
Jika Anda menggunakan DataWorks SQL Lab, klik Data Source di pojok kanan atas dan periksa apakah sumber data yang terkait adalah proyek eksternal.
Jika Anda menggunakan MaxCompute SQL Lab, klik Run Configuration di sebelah kanan dan periksa apakah sumber daya komputasi yang dipilih adalah proyek eksternal.
Jika Anda menggunakan odpscmd, periksa apakah nilai parameter
project_namedalam file odps_config.ini adalah proyek eksternal.
Setelah memastikan Anda menggunakan proyek eksternal, jalankan pernyataan SQL berikut secara bersamaan.
-- Aktifkan sintaks skema untuk sesi. SET odps.namespace.schema=true; SHOW schemas;
SHOW SCHEMAS hanya mengembalikan default
Masalah: Menjalankan SHOW SCHEMAS di proyek eksternal hanya mengembalikan default.
Solusi:
Pertama, pastikan bahwa proyek saat ini adalah proyek eksternal.
Jika Anda menggunakan node SQL DataWorks, klik Debug Configuration di sebelah kanan dan periksa apakah sumber daya komputasi yang terkait adalah proyek eksternal.
Jika Anda menggunakan DataWorks SQL Lab, klik Data Source di pojok kanan atas dan periksa apakah sumber data yang terkait adalah proyek eksternal.
Jika Anda menggunakan MaxCompute SQL Lab, klik Run Configuration di sebelah kanan dan periksa apakah sumber daya komputasi yang dipilih adalah proyek eksternal.
Jika Anda menggunakan odpscmd, periksa nilai parameter
project_namedalam file odps_config.ini.
Setelah memastikan itu adalah proyek eksternal, login ke Konsol Data Lake Formation (DLF) untuk memverifikasi bahwa katalog yang terikat ke proyek eksternal berisi database lain.
Jika hasil
SHOW SCHEMASmasih tidak menampilkan database yang diharapkan setelah Anda menyelesaikan langkah 1 dan 2, kirim tiket.
Kesalahan "You should use dynamic bucket (bucket = -1) mode in cross partition update"
Masalah: Menjalankan SHOW TABLES di proyek eksternal menghasilkan kesalahan: 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:
MaxCompute saat ini tidak mendukung tabel Cross Partition dengan bucket tetap, yang menyebabkan kesalahan saat SHOW TABLES dieksekusi.
Sebagai solusi sementara, login ke Konsol Data Lake Formation (DLF) dan hapus tabel Cross Partition yang tidak didukung tersebut.
Kesalahan "Can't set default schema if odps.namespace.schema is false"
Masalah: Menjalankan SHOW TABLES atau SHOW SCHEMAS menghasilkan kesalahan "FAILED: Can't set default schema if odps.namespace.schema is false."
Solusi:
Pertama, periksa apakah Anda telah menambahkan perintah
SET odps.namespace.schema=true;sebelum pernyataan SQL Anda untuk mengaktifkan sintaks skema pada tingkat sesi.Jika kesalahan tetap muncul setelah mengaktifkan flag tersebut, pastikan Anda menggunakan urutan perintah yang benar. Untuk membaca tabel dari proyek eksternal lain, gunakan urutan yang benar berikut:
USE external_project; SET odps.namespace.schema=true; USE schema schema_name; SHOW tables;
Kesalahan "Failed to connect"
Masalah: Membaca tabel di proyek eksternal Paimon_DLF gagal dengan kesalahan: "Caused by: java.net.ConnectException: Failed to connect to cn-hangzhou-intranet.dlf.aliyuncs.com/xx.xx.xx.xx:80"
Kesalahan ini menunjukkan bahwa metode pembacaan tabel saat ini mengharuskan Anda menambahkan proyek internal untuk pekerjaan saat ini ke daftar izin. Alamatnya adalah cn-hangzhou-intranet.dlf.aliyuncs.com.
Solusi:
Bergabunglah dengan grup DingTalk komunitas developer MaxCompute menggunakan tautan ini atau dengan mencari nomor grup DingTalk (11782920), dan hubungi tim dukungan teknis MaxCompute untuk menambahkan URL yang mengembalikan kesalahan ke daftar izin.
Setelah alamat ditambahkan ke daftar izin, Anda harus menambahkan parameter berikut sebelum membaca dari tabel.
set odps.security.outbound.intranetlist=cn-hangzhou-intranet.dlf.aliyuncs.com:80; set odps.internet.access.list=cn-hangzhou-intranet.dlf.aliyuncs.com:80;
Pemetaan tipe data
Untuk informasi lebih lanjut tentang tipe data MaxCompute, lihat Tipe data (V1.0) dan Tipe data (V2.0).
Tipe data Paimon | Tipe data MaxCompute 2.0 | Dukungan baca/tulis | Deskripsi |
TINYINT | TINYINT | Integer bertanda 8-bit. | |
SMALLINT | SMALLINT | Integer bertanda 16-bit. | |
INT | INT | Integer bertanda 32-bit. | |
BIGINT | BIGINT | Integer bertanda 64-bit. | |
BINARY(MAX_LENGTH) | BINARY | Tipe data biner. Batas panjang saat ini adalah 8 MB. | |
FLOAT | FLOAT | Tipe floating-point biner 32-bit. | |
DOUBLE | DOUBLE | Tipe floating-point biner 64-bit. | |
DECIMAL(precision,scale) | DECIMAL(precision,scale) | Tipe numerik eksak desimal. Default adalah
| |
VARCHAR(n) | VARCHAR(n) | Tipe karakter panjang variabel. n adalah panjang, yang harus berada dalam rentang [1, 65535]. | |
CHAR(n) | CHAR(n) | Tipe karakter panjang tetap. n adalah panjang, yang harus berada dalam rentang [1, 255]. | |
VARCHAR(MAX_LENGTH) | STRING | Batas panjang saat ini untuk tipe string adalah 8 MB. | |
DATE | DATE | Format tipe tanggal adalah | |
TIME, TIME(p) | Tidak didukung | Mewakili waktu tanpa zona waktu dengan presisi nanodetik. TIME(p) menunjukkan presisi bagian pecahan, yang harus berada dalam rentang 0 hingga 9. Default adalah 0. MaxCompute tidak memiliki tipe yang sesuai. | |
TIMESTAMP, TIMESTAMP(p) | TIMESTAMP_NTZ | Tipe timestamp tanpa zona waktu, akurat hingga nanodetik. Membaca tabel memerlukan penonaktifan fitur native | |
TIMESTAMP WITH LOCAL TIME_ZONE(9) | TIMESTAMP |
| |
TIMESTAMP WITH LOCAL TIME_ZONE(9) | DATETIME | Tipe timestamp presisi hingga nanodetik. Formatnya adalah | |
BOOLEAN | BOOLEAN | Tipe BOOLEAN. | |
ARRAY | ARRAY | Tipe kompleks. | |
MAP | MAP | Tipe kompleks. | |
ROW | STRUCT | Tipe kompleks. | |
MULTISET<t> | Tidak didukung | MaxCompute tidak memiliki tipe yang sesuai. | |
VARBINARY, VARBINARY(n), BYTES | BINARY | Tipe data string biner panjang variabel. |