All Products
Search
Document Center

MaxCompute:Tabel eksternal Paimon

Last Updated:Aug 22, 2026

MaxCompute memungkinkan Anda membuat tabel eksternal Paimon untuk memetakan ke direktori tabel Paimon yang disimpan di Object Storage Service (OSS) dan mengakses datanya. Topik ini menjelaskan cara membuat serta mengakses tabel eksternal Paimon menggunakan MaxCompute.

Ikhtisar

Apache Paimon adalah format penyimpanan lakehouse untuk pemrosesan streaming maupun batch yang menyediakan penulisan ber-throughput tinggi dan kueri ber-latensi rendah. Format ini terintegrasi penuh dengan mesin komputasi umum seperti Spark, Hive, dan Trino, serta dengan Realtime Compute for Apache Flink dan E-MapReduce. Anda dapat menggunakan Apache Paimon untuk membangun data lake di OSS secara cepat dan menghubungkannya ke MaxCompute guna analitik data lake. Fitur penyaringan metadata lebih lanjut meningkatkan performa kueri dengan melewatkan file direktori OSS yang tidak diperlukan dalam pekerjaan baca.

Batasan

  • Batasan skema

    Tabel eksternal Paimon tidak memperbarui skemanya secara otomatis untuk mencerminkan perubahan skema pada file Paimon yang mendasarinya.

  • Batasan properti tabel

    • Anda tidak dapat mengatur properti kluster pada tabel eksternal Paimon.

    • Anda tidak dapat menetapkan primary key.

    • Tabel eksternal Paimon tidak mendukung transmisi langsung properti tabel Paimon.

  • Operasi penulisan, pembaruan, dan kueri data

    • Anda dapat menggunakan pernyataan INSERT INTO atau INSERT OVERWRITE untuk menulis data ke tabel eksternal Paimon.

    • Menulis data ke tabel bucket dinamis dan tabel lintas-partisi tidak didukung.

    • Operasi UPDATE dan DELETE tidak didukung pada tabel eksternal Paimon.

    • Kueri time-travel yang mengakses versi data historis tidak didukung untuk tabel eksternal Paimon.

    • Jangan menulis data langsung ke tabel eksternal Paimon. Sebagai gantinya, gunakan metode seperti UNLOAD untuk mengekspor data ke OSS.

  • MaxCompute dan OSS harus berada di wilayah yang sama.

  • Untuk informasi selengkapnya, lihat Tipe data yang didukung.

Buat tabel eksternal Paimon

Sintaks

Untuk detail sintaks pembuatan tabel eksternal dalam berbagai format, lihat Tabel eksternal OSS.

CREATE EXTERNAL TABLE  [IF NOT EXISTS] <mc_oss_extable_name>
(
  <col_name> <data_type>,
  ...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>, ...)]
STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
WITH serdeproperties (
  'odps.properties.rolearn'='acs:ram::<uid>:role/aliyunodpsdefaultrole'
)
LOCATION '<oss_location>';

Parameter umum

Untuk informasi selengkapnya tentang parameter umum, lihat Parameter sintaks dasar.

Menulis data

Untuk detail sintaks penulisan di MaxCompute, lihat Sintaks penulisan.

Kueri dan analisis data

  • Logika sharding (split) data untuk tabel Paimon berbeda dari tabel MaxCompute native. Format Paimon memiliki mekanisme internal sendiri untuk pengorganisasian file dan sharding, yang tidak sepenuhnya sejalan dengan parameter MaxCompute.

  • Untuk sintaks SELECT, lihat Sintaks kueri.

  • Untuk mengoptimalkan rencana kueri, lihat Optimasi kueri.

  • Untuk informasi selengkapnya tentang bad row skipping, lihat BadRowSkipping.

Contoh

Langkah 1: Prasyarat

  1. Anda telah membuat proyek MaxCompute.

  2. Anda telah menyiapkan bucket dan direktori OSS. Untuk informasi selengkapnya, lihat Buat bucket dan Kelola direktori.

    Pastikan bucket Anda berada di wilayah yang sama dengan proyek MaxCompute Anda.
  3. Berikan izin.

    1. Anda memiliki izin untuk mengakses OSS. Anda dapat mengakses tabel eksternal OSS menggunakan Akun Alibaba Cloud, Pengguna RAM, atau Peran RAM. Untuk informasi selengkapnya tentang cara memberikan izin, lihat Otorisasi mode STS untuk OSS.

    2. Anda memiliki izin CreateTable di proyek MaxCompute. Untuk informasi selengkapnya tentang izin terkait tabel, lihat Izin MaxCompute.

Langkah 2: Siapkan data di Flink

Buat katalog Paimon dan tabel Paimon, lalu masukkan data ke dalam tabel tersebut.

Catatan

Jika Anda sudah memiliki data tabel Paimon di OSS, Anda dapat melewati langkah ini.

  1. Buat katalog filesystem Paimon

    1. Masuk ke Konsol Real-time Compute for Apache Flink dan pilih wilayah di pojok kiri atas.

    2. Klik nama ruang kerja target, lalu di panel navigasi sebelah kiri, pilih Data Management.

    3. Di halaman catalog list , klik Create Catalog . Di kotak dialog Create Catalog , pilih Apache Paimon, klik Next , lalu konfigurasikan parameter berikut:

      Parameter

      Wajib

      Deskripsi

      metastore

      Ya

      Jenis metastore. Dalam contoh ini, pilih filesystem.

      catalog name

      Ya

      Nama katalog kustom, misalnya paimon-catalog.

      warehouse

      Ya

      Direktori warehouse di OSS. Dalam contoh ini, direktorinya adalah oss://paimon-fs/paimon-test/.

      fs.oss.endpoint

      Ya

      Titik akhir layanan OSS. Misalnya, titik akhir untuk wilayah Tiongkok (Hangzhou) adalah oss-cn-hangzhou-internal.aliyuncs.com.

      fs.oss.accessKeyId

      Ya

      ID AccessKey yang digunakan untuk mengakses OSS.

      fs.oss.accessKeySecret

      Ya

      Rahasia AccessKey yang digunakan untuk mengakses OSS.

  2. Buat tabel Paimon

    1. Masuk ke Konsol Real-time Compute for Apache Flink dan pilih wilayah di pojok kiri atas.

    2. Klik nama ruang kerja target, lalu di panel navigasi kiri, pilih Development > Data Query.

    3. Di tab Query Script, klik image untuk membuat skrip kueri baru.

      Masukkan dan jalankan perintah berikut:

      CREATE TABLE `paimon_catalog`.`default`.test_tbl (
          id BIGINT,
          data STRING,
          dt STRING,
          PRIMARY KEY (dt, id) NOT ENFORCED
      ) PARTITIONED BY (dt);
      
      INSERT INTO `paimon-catalog`.`default`.test_tbl VALUES (1,'CCC','2024-07-18'), (2,'DDD','2024-07-18');
  3. Untuk pekerjaan SQL yang selesai secara otomatis, seperti yang menjalankan pernyataan INSERT INTO ... VALUES ..., lakukan operasi berikut:

    1. Klik nama ruang kerja target. Di panel navigasi kiri, pilih O&M > Deployments.

    2. Di halaman Deployments, klik pekerjaan target untuk membuka halaman deployment details.

    3. Di bagian Parameters, klik Edit. Lalu, di bagian Other Configuration, atur execution.checkpointing.checkpoints-after-tasks-finish.enabled: true dan simpan perubahan Anda.

      Untuk informasi selengkapnya tentang cara mengonfigurasi parameter waktu proses untuk pekerjaan, lihat Konfigurasi informasi penerapan pekerjaan.

Langkah 3: Buat tabel eksternal Paimon

Jalankan pernyataan SQL berikut di MaxCompute untuk membuat tabel eksternal Paimon:

CREATE EXTERNAL TABLE oss_extable_paimon_pt
(
    id BIGINT,
    data STRING
)
PARTITIONED BY (dt STRING )
STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
WITH serdeproperties (
    'odps.properties.rolearn'='acs:ram::<uid>:role/aliyunodpsdefaultrole'
)
LOCATION 'oss://oss-cn-<your region>-internal.aliyuncs.com/<table_path>'
;

Dalam pernyataan di atas, table_path adalah path ke tabel Paimon yang Anda buat di Flink, misalnya paimon-fs/paimon-test/default.db/test_tbl. Untuk menemukan path ini, lakukan langkah-langkah berikut:

  1. Masuk ke Konsol Real-time Compute for Apache Flink dan pilih wilayah di pojok kiri atas.

  2. Klik nama ruang kerja target, lalu di panel navigasi sebelah kiri, pilih Data Management.

  3. Di halaman Catalogs, di bawah katalog target, klik default. Di halaman default, temukan tabel target dan klik View di kolom Actions.

  4. Di tab Table Schema, salin nilai parameter path dari bagian Properties. Untuk table_path, masukkan path tanpa awalan oss://.

Langkah 4: Muat data partisi

Jika tabel eksternal OSS yang Anda buat adalah tabel partisi, Anda harus memuat partisinya. Untuk informasi selengkapnya, lihat Tabel eksternal OSS.

MSCK REPAIR TABLE oss_extable_paimon_pt ADD PARTITIONS;

Langkah 5: Kueri tabel eksternal Paimon

Jalankan perintah berikut di MaxCompute untuk mengkueri tabel eksternal Paimon oss_extable_paimon_pt.

SET odps.sql.common.table.planner.ext.hive.bridge = true;
SET odps.sql.hive.compatible = true;
SELECT * FROM oss_extable_paimon_pt WHERE dt='2024-07-18';

Hasil berikut dikembalikan:

+------------+------------+------------+
| id         | data       | dt         | 
+------------+------------+------------+
| 1          | CCC        | 2024-07-18 | 
| 2          | DDD        | 2024-07-18 | 
+------------+------------+------------+
Catatan

Jika skema dalam file Paimon berbeda dari skema tabel eksternal:

  • Ketidaksesuaian jumlah kolom: Jika file Paimon berisi lebih sedikit kolom daripada DDL tabel eksternal, MaxCompute membaca kolom yang hilang sebagai NULL. Jika file berisi lebih banyak kolom, MaxCompute mengabaikannya.

  • Ketidaksesuaian tipe kolom: Anda tidak dapat membaca data dari kolom STRING Paimon ke kolom INT MaxCompute. Membaca data dari kolom INT ke kolom STRING didukung tetapi tidak disarankan.

Tipe data yang didukung

Untuk informasi selengkapnya tentang tipe data MaxCompute, lihat Edisi tipe data 1.0 dan 2.0.

Tipe data Paimon

Tipe data MaxCompute 2.0

Dukungan baca/tulis

Deskripsi

TINYINT

TINYINT

Didukung

Integer bertanda 8-bit.

SMALLINT

SMALLINT

Didukung

Integer bertanda 16-bit.

INT

INT

Didukung

Integer bertanda 32-bit.

BIGINT

BIGINT

Didukung

Integer bertanda 64-bit.

BINARY(MAX_LENGTH)

BINARY

Didukung

Tipe data biner. Panjang maksimum saat ini adalah 8 MB.

FLOAT

FLOAT

Didukung

Bilangan titik mengambang biner 32-bit.

DOUBLE

DOUBLE

Didukung

Bilangan titik mengambang biner 64-bit.

DECIMAL(precision,scale)

DECIMAL(precision,scale)

Didukung

Tipe numerik desimal eksak. Nilai default adalah decimal(38,18). Anda dapat menyesuaikan nilai precision dan scale.

  • precision: Jumlah digit maksimum. Nilai yang valid adalah 1 hingga 38.

  • scale: Jumlah digit pada bagian pecahan. Nilai yang valid adalah 0 hingga 18.

VARCHAR(n)

VARCHAR(n)

Didukung

Tipe karakter panjang variabel. n menentukan panjang dan berkisar antara 1 hingga 65.535.

CHAR(n)

CHAR(n)

Didukung

Tipe karakter panjang tetap. n menentukan panjang dan berkisar antara 1 hingga 255.

VARCHAR(MAX_LENGTH)

STRING

Didukung

Tipe string. Panjang maksimum saat ini adalah 8 MB.

DATE

DATE

Didukung

Tipe tanggal. Formatnya adalah yyyy-mm-dd.

TIME, TIME(p)

Tidak didukung

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-nya adalah 0.

Tidak ada tipe yang sesuai di MaxCompute.

TIMESTAMP, TIMESTAMP(p)

TIMESTAMP_NTZ

Didukung

Tipe timestamp tanpa zona waktu yang akurat hingga nanodetik.

Untuk membaca tipe data ini, Anda harus menonaktifkan jembatan JNI native dengan menjalankan perintah berikut: SET odps.sql.common.table.jni.disable.native=true;

TIMESTAMP WITH LOCAL TIME_ZONE(9)

TIMESTAMP

Didukung

  • Tipe timestamp yang akurat hingga nanodetik. Formatnya adalah yyyy-mm-dd hh:mm:ss.xxxxxxxxx.

  • Untuk tipe TIMESTAMP presisi rendah di tabel sumber Paimon, MaxCompute memotong nilai saat menulis. Untuk presisi 0–3, data dipotong menjadi 3 digit. Untuk presisi 4–6, data dipotong menjadi 6 digit. Untuk presisi 7–9, data dipotong menjadi 9 digit.

TIMESTAMP WITH LOCAL TIME_ZONE(9)

DATETIME

Tidak didukung

Tipe timestamp yang akurat hingga nanodetik.

Formatnya adalah yyyy-mm-dd hh:mm:ss.xxxxxxxxx.

BOOLEAN

BOOLEAN

Didukung

Tipe BOOLEAN.

ARRAY

ARRAY

Didukung

Tipe kompleks.

MAP

MAP

Didukung

Tipe kompleks.

ROW

STRUCT

Didukung

Tipe kompleks.

MULTISET<t>

Tidak didukung

Tidak didukung

Tidak ada tipe yang sesuai di MaxCompute.

VARBINARY, VARBINARY(n), BYTES

BINARY

Didukung

Tipe data string biner panjang variabel.

Pemecahan masalah

Error kSIGABRT saat membaca tabel eksternal Paimon

  • Pesan error:

    ODPS-0123144: Fuxi job failed - kSIGABRT(errCode:6) at Odps/*****_SQL_0_1_0_job_0/M1@f01b17437.cloud.eo166#3. 
      Detail error msg: CRASH_CORE, maybe caused by jvm crash, please check your java udf/udaf/udtf. 
      | fatalInstance: Odps/*****_SQL_0_1_0_job_0/M1#0_0 
  • Penyebab:

    Error ini terjadi saat Anda membaca kolom TIMESTAMP_NTZ dalam mode JNI.

  • Solusi:

    Nonaktifkan jembatan JNI dengan menjalankan perintah berikut sebelum kueri Anda: SET odps.sql.common.table.jni.disable.native=true;

Artikel terkait

Anda juga dapat menggunakan katalog Flink kustom untuk mengelola tabel eksternal Paimon MaxCompute. Hal ini memungkinkan Anda menulis data menggunakan Flink dan mengkuerinya di MaxCompute. Untuk informasi selengkapnya, lihat Buat tabel eksternal Paimon MaxCompute menggunakan Flink.