Proyek eksternal Paimon-DLF memetakan katalog Data Lake Formation (DLF) ke MaxCompute untuk akses metadata dan data secara real-time. Proyek ini mendelegasikan pengelolaan izin ke DLF dan mendukung operasi baca/tulis pada data Object Storage Service (OSS) yang dikelola DLF, sehingga memungkinkan pemetaan data lake tingkat katalog untuk kolaborasi lintas engine berbasis Paimon. Fitur ini saat ini berada dalam tahap pratinjau undangan.
Cakupan penerapan
Format tabel: Hanya tabel Paimon yang disimpan di OSS dan sepenuhnya dikelola oleh DLF yang didukung.
Batasan penulisan: Tabel bucket dinamis dan tabel lintas partisi tidak mendukung
INSERT INTOatauINSERT OVERWRITE.Proyek eksternal:
Dukungan Evolusi Skema
Jenis operasi
Didukung
Tambah kolom
Hapus kolom
Ubah urutan kolom
Ubah tipe data kolom
Ubah nama kolom
Ubah komentar kolom
Ubah nullability kolom
Dukungan operasi partisi
Operasi/Dukungan
Didukung
Tambah partisi
Ubah waktu pembaruan partisi
Ubah nilai partisi
Gabung partisi
Daftar semua partisi
Lihat informasi partisi
Hapus partisi
Bersihkan data partisi
Operasi resource dan fungsi tidak didukung.
Prosedur
Langkah 1: Berikan izin
Model izin
Control plane: Izin ini diperiksa saat Anda melakukan operasi di Konsol MaxCompute, terutama saat membuat proyek eksternal dan mengaitkannya dengan katalog DLF.
Izin ini dikelola oleh RAM. Akun Alibaba Cloud Anda harus login ke Konsol RAM untuk mengonfigurasi izin yang diperlukan. Untuk informasi lebih lanjut, lihat Mengelola izin untuk Pengguna RAM.
Data plane: Izin ini diperiksa saat Anda membaca atau menulis ke tabel Paimon setelah login ke proyek eksternal. Hal ini biasanya terjadi saat Anda membuat, memelihara, atau menggunakan skema, tabel, dan resource lain dalam katalog DLF yang terikat dengan menjalankan Pernyataan SQL di MaxCompute.
Izin ini dikelola oleh Konsol DLF. Akun Alibaba Cloud Anda harus login ke Konsol DLF untuk mengonfigurasi izin yang diperlukan. Untuk informasi lebih lanjut, lihat Memberikan izin kepada Pengguna RAM.
Berikan izin DLF ke MaxCompute
MaxCompute mengakses data Paimon-DLF melalui sumber data eksternal dan proyek eksternal. Sebelum melanjutkan, berikan izin data DLF yang diperlukan ke akun akses MaxCompute.
Opsi "Use task executor identity" meneruskan identitas pelaksana tugas ke DLF. Baik MaxCompute maupun DLF kemudian memberlakukan izin berdasarkan identitas ini. Pertama, buat peran terkait layanan untuk MaxCompute dan berikan izin yang diperlukan:
Login ke Konsol RAM.
Di bilah 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 dan klik Create Service Linked Role.Jika Anda diminta bahwa peran tersebut sudah ada, artinya peran tersebut telah diotorisasi dan Anda dapat mengabaikan prompt tersebut.
Berikan izin kepada Pengguna RAM
Jika Anda adalah Pengguna RAM, lampirkan kebijakan izin berikut. Untuk informasi tentang cara menambahkan izin, lihat Mengelola izin untuk 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 izin ini diperlukan karena pembuatan proyek eksternal Paimon-DLF memerlukan izin List untuk katalog DLF.
Langkah 2: Buat sumber data eksternal Paimon_DLF
Login ke Konsol MaxCompute dan pilih wilayah di pojok kiri atas.
Di panel navigasi sebelah 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
Masukkan nama kustom. Nama harus memenuhi persyaratan berikut:
Harus dimulai dengan huruf dan hanya boleh berisi huruf kecil, angka, dan garis bawah (_).
Panjangnya tidak boleh melebihi 128 karakter.
Sebagai contoh, Anda dapat memasukkan
paimon_dlf.Description
Tidak
Masukkan deskripsi sesuai kebutuhan.
Region
Ya
Wilayah saat ini dipilih secara default.
Authentication and Authorization
Ya
Nilai default adalah peran RAM Alibaba Cloud.
Service-linked Role
Ya
Peran dihasilkan secara default.
Endpoint
Ya
Endpoint dihasilkan secara otomatis. Untuk wilayah China (Hangzhou), endpoint-nya adalah
cn-hangzhou-intranet.dlf.aliyuncs.com.Foreign Server Supplemental Properties
Tidak
Properti ini menentukan bagaimana tugas yang menggunakan sumber data ini mengakses sistem sumber.
CatatanParameter yang didukung akan diperluas dalam pembaruan dokumentasi mendatang seiring perkembangan produk.
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 dan pilih wilayah di pojok kiri atas.
Di panel navigasi sebelah kiri, pilih .
Di tab External Project, klik Create Project.
Di kotak dialog Create Project, konfigurasikan pengaturan dan klik OK.
Parameter
Wajib
Deskripsi
Project Type
Ya
Nilai default adalah External Project.
Region
Ya
Wilayah saat ini dipilih secara default dan tidak dapat diubah.
Project Name (Globally Unique)
Ya
Nama harus terdiri dari 3 hingga 28 karakter, dimulai dengan huruf, dan hanya boleh berisi huruf, angka, dan garis bawah (_).
MaxCompute Foreign Server Type
Tidak
Nilai default adalah Paimon_DLF.
MaxCompute Foreign Server
Tidak
Use Existing: Menampilkan daftar sumber data eksternal yang ada.
Create Foreign Server: Memungkinkan Anda membuat dan menggunakan sumber data eksternal baru.
MaxCompute Foreign Server Name
Ya
Jika Anda memilih untuk menggunakan sumber data yang ada, pilih namanya dari daftar drop-down.
Jika Anda memilih untuk membuat sumber data baru, namanya akan digunakan secara otomatis.
Data Catalog
Ya
Katalog data DLF.
Billing Method
Ya
Pilih Subscription atau Pay-as-you-go.
Default Quota
Ya
Pilih kuota yang sudah ada.
Description
Tidak
Masukkan deskripsi proyek kustom.
Langkah 4: Gunakan SQL untuk mengakses sumber data
Menghapus proyek eksternal tidak menghapus data yang mendasarinya karena proyek tersebut hanya merupakan pemetaan ke sumber data.
Namun, berbeda dengan tabel eksternal standar, menjalankan perintah DROP TABLE atau DROP SCHEMA di proyek eksternal akan mengirim permintaan ke layanan peer. Hal ini akan menghapus tabel atau database yang sesuai secara permanen. Gunakan operasi DROP dengan hati-hati.
Pilih tool koneksi untuk login ke proyek eksternal.
Contoh berikut menggunakan node SQL untuk pengembangan data di ruang kerja DataWorks (versi baru).
Login ke Konsol DataWorks dan pilih wilayah di pojok kiri atas.
Di panel navigasi sebelah kiri, pilih Workspace.
Di halaman Workspaces, klik Create Workspace atau klik nama ruang kerja yang sudah ada.
Di halaman Workspace Details, klik Computing Resource di panel navigasi sebelah kiri.
Di halaman Computing Resource, klik Associate Computing Resources, dan pilih MaxCompute.
Konfigurasikan Basic Information untuk Associate MaxCompute Computing Resource.
Untuk proyek MaxCompute, pilih proyek eksternal.
Daftar skema di proyek eksternal.
-- Aktifkan sintaks skema di tingkat sesi. SET odps.namespace.schema=true; SHOW schemas; -- Contoh hasil. 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, tambahkan
use external_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; -- Hasil ID = 20250919****am4qb acs:ram::<uid>:root emp OKBuat skema baru di proyek eksternal.
-- Dalam contoh ini, schema_name adalah schema_demo_test. SET odps.namespace.schema=true; CREATE 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 informasi tentang cara memberikan izin, lihat Pengelolaan 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:
CatatanUntuk tipe TIMESTAMP presisi rendah dari tabel Paimon sumber, data dipotong selama operasi penulisan sebagai berikut: presisi 0–3 dipotong menjadi 3 tempat desimal, 4–6 menjadi 6 tempat desimal, dan 7–9 menjadi 9 tempat desimal.
SET odps.namespace.schema=true; USE schema <schema_name>; CREATE TABLE schema_table(id int,name string); INSERT INTO schema_table VALUES (101,'Zhang San'),(102,'Li Si'); -- Kueri tabel schema_table. SET odps.namespace.schema=true; USE schema <schema_name>; SELECT * FROM schema_table; -- Hasil +------------+------------+ | id | name | +------------+------------+ | 101 | Zhang San | | 102 | Li Si | +------------+------------+
Beralih ke skema
defaultyang 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. SET odps.namespace.schema=true; USE schema default; SELECT * FROM test_table; -- Hasil +------------+------------+ | id | name | +------------+------------+ | 101 | Zhang San | | 102 | Li Si | +------------+------------+ -- Tulis data ke tabel dan kueri untuk memverifikasi operasi penulisan. SET odps.namespace.schema=true; USE schema default; INSERT INTO test_table VALUES (103,'Wang Wu'); SET odps.namespace.schema=true; USE schema default; SELECT * FROM test_table; -- Hasil +------------+------------+ | id | name | +------------+------------+ | 101 | Zhang San | | 102 | Li Si | | 103 | Wang Wu | +------------+------------+
Meneruskan properti tabel Paimon
Apache Paimon menyediakan opsi konfigurasi inti. Saat membuat tabel Paimon di proyek eksternal, tentukan opsi ini dalam klausa TBLPROPERTIES dari pernyataan CREATE TABLE Anda.
Konfigurasi: Tambahkan parameter dengan awalan mcfed. ke daftar TBLPROPERTIES. Nama parameter setelah awalan harus sesuai dengan nama parameter Paimon asli.
Contoh
Buat tabel eksternal Paimon dengan bucket, kunci primer, dan partisi
Buat tabel dan konfigurasikan parameter eksternalnya
-- Beralih ke proyek eksternal Anda. Anda dapat melewati langkah ini jika sudah berada di dalamnya. use <your external project>; -- Aktifkan sintaks skema di tingkat 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. Opsional jika kunci primer ditentukan. "mcfed.primary-key"="dt,id", -- Kunci primer "mcfed.partition"="dt" -- Bidang partisi );Masukkan data ke tabel eksternal
use <your external project>; SET odps.namespace.schema=true; use schema <your schema>; 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
use <your external project>; SET odps.namespace.schema=true; use schema <your schema>; SELECT * FROM oss_extable_bucket_pk_pt_bucket; -- Hasil: +------------+---------+------------+ | 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 di pojok kiri atas, pilih wilayah.
Lihat detail tabel di katalog.
FAQ
Masalah 1: Kesalahan saat membuat proyek eksternal
Permasalahan: Saat Anda mencoba membuat proyek eksternal, Anda menerima pesan kesalahan: "You are not authorized to perform this action."
Dalam detail kesalahan, kode kesalahan adalah NoMCPermission.
Solusi:
Jika Anda menggunakan Pengguna RAM, pastikan kebijakan
AliyunMaxComputeFullAccessdilampirkan ke Pengguna RAM tersebut. Untuk informasi lebih lanjut, lihat Langkah 1.Operasi ini mengharuskan Anda memilih katalog dari Data Lake Formation (DLF). Pastikan Anda memiliki izin yang diperlukan untuk operasi DLF. Untuk informasi lebih lanjut, lihat Langkah 1.
Masalah 2: Kesalahan saat menjalankan SHOW TABLES di skema default
Permasalahan: Saat Anda menjalankan perintah SHOW TABLES di skema default proyek eksternal, Anda menerima pesan kesalahan berikut: "Forbidden:User acs: ram: :<uid>:user/** doesn't have privilege LIST on DATABASE default".
Solusi:
Login ke Konsol Data Lake Formation (DLF), dan di pojok kiri atas, pilih wilayah.
Di panel navigasi sebelah kiri, pilih System & Security
Di tab , refresh halaman untuk memeriksa apakah Pengguna RAM saat ini ada.
Jika pengguna tersebut ada, buka tab untuk memberikan izin kepada Pengguna RAM.
Masalah 3: Kesalahan "invalid database operations on two-tier"
Permasalahan: Saat Anda menjalankan perintah SHOW SCHEMAS di proyek eksternal, Anda menerima pesan kesalahan: "invalid database operations on two-tier".
Solusi:
Pertama, pastikan Anda menggunakan proyek eksternal.
Jika Anda menggunakan node SQL DataWorks, klik Debug Configuration di panel kanan dan verifikasi bahwa resource komputasi yang terikat adalah proyek eksternal.
Jika Anda menggunakan analisis SQL DataWorks, klik Data Source di pojok kanan atas dan verifikasi bahwa sumber data yang terikat adalah proyek eksternal.
Jika Anda menggunakan analisis SQL MaxCompute, klik Run Configuration di panel kanan dan verifikasi bahwa proyek yang dipilih di bagian resource komputasi adalah proyek eksternal.
Jika Anda menggunakan odpscmd, periksa nilai parameter
project_namedi file odps_config.ini untuk memastikan bahwa nilainya diatur ke nama proyek eksternal.
Setelah Anda memastikan bahwa Anda menggunakan proyek eksternal, pilih dan jalankan pernyataan SQL berikut bersama-sama.
-- Aktifkan sintaks skema di tingkat sesi. SET odps.namespace.schema=true; SHOW schemas;
Masalah 4: SHOW SCHEMAS hanya mengembalikan skema default
Permasalahan: Saat Anda menjalankan perintah SHOW SCHEMAS di proyek eksternal, perintah tersebut hanya mengembalikan 'default'.
Solusi:
Pertama, pastikan Anda menggunakan proyek eksternal.
Jika Anda menggunakan node SQL DataWorks, klik Debug Configuration di panel kanan dan verifikasi bahwa resource komputasi yang terikat adalah proyek eksternal.
Jika Anda menggunakan analisis SQL DataWorks, klik Data Source di pojok kanan atas dan verifikasi bahwa sumber data yang terikat adalah proyek eksternal.
Jika Anda menggunakan analisis SQL MaxCompute, klik Run Configuration di panel kanan dan verifikasi bahwa proyek yang dipilih di bagian resource komputasi adalah proyek eksternal.
Jika Anda menggunakan odpscmd, periksa nilai parameter
project_namedi file odps_config.ini untuk memastikan bahwa nilainya diatur ke nama proyek eksternal.
Setelah Anda memastikan bahwa Anda menggunakan proyek eksternal, login ke Konsol Data Lake Formation (DLF) dan periksa apakah database lain ada di katalog yang terikat ke proyek eksternal.
Jika Anda telah menyelesaikan verifikasi pada Langkah 1 dan 2, tetapi perintah SHOW SCHEMAS masih tidak mengembalikan database yang diharapkan, kirimkan tiket untuk melaporkan masalah tersebut.
Masalah 5: Kesalahan "Dynamic bucket"
Permasalahan: Saat Anda menjalankan perintah SHOW TABLES di proyek eksternal, Anda menerima pesan 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 tidak mendukung tabel kunci primer lintas partisi dengan bucket tetap.
Solusi sementara: Hapus tabel PK lintas partisi yang tidak didukung di Konsol Data Lake Formation (DLF).
Masalah 6: Kesalahan "Can't set default schema..."
Permasalahan: Saat Anda menjalankan SHOW TABLES atau SHOW SCHEMAS, Anda menerima pesan kesalahan berikut: "FAILED: Can't set default schema if odps.namespace.schema is false."
Solusi:
Pertama, pastikan Anda telah menambahkan flag sesi
SET odps.namespace.schema=true;sebelum pernyataan SQL Anda untuk mengaktifkan sintaks skema.Jika kesalahan tetap muncul setelah Anda mengaktifkan flag tersebut, verifikasi urutan pernyataan Anda. 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;
Masalah 7: Kesalahan "Failed to connect to...dlf.aliyuncs.com"
Permasalahan: Saat Anda mencoba membaca data dari tabel di proyek eksternal Paimon-DLF, Anda menerima pesan kesalahan yang mirip dengan berikut: "Caused by: java.net.ConnectException: Failed to connect to cn-***-intranet.dlf.aliyuncs.com/xx.xx.xx.xx:80"
Kesalahan ini menunjukkan bahwa Anda perlu menambahkan alamat cn-***-intranet.dlf.aliyuncs.com ke daftar izin (allowlist) proyek internal tempat pekerjaan dijalankan.
Solusi:
Bergabunglah dengan grup komunitas developer MaxCompute di DingTalk menggunakan tautan aplikasi atau dengan mencari ID grup
11782920di DingTalk. Hubungi tim dukungan teknis MaxCompute dan minta mereka menambahkan alamat dari pesan kesalahan ke daftar izin.Setelah alamat ditambahkan ke daftar izin, sertakan parameter berikut sebelum operasi baca Anda.
set odps.security.outbound.intranetlist=cn-***-intranet.dlf.aliyuncs.com:80; set odps.internet.access.list=cn-***-intranet.dlf.aliyuncs.com:80;
Pemetaan tipe data
Untuk detail 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 |
|
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 dari 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 jembatan JNI native 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. |