All Products
Search
Document Center

MaxCompute:Tabel eksternal Paimon

Last Updated:May 22, 2026

MaxCompute mendukung pembuatan tabel eksternal Paimon yang memetakan ke direktori tabel Paimon di bucket OSS, lalu mengakses datanya. Topik ini menjelaskan cara membuat tabel eksternal Paimon dan menjalankan query dari MaxCompute.

Pengenalan fitur

Apache Paimon adalah format penyimpanan data lake terpadu untuk beban kerja batch dan streaming, dengan penulisan ber-throughput tinggi dan query berlatensi rendah. Mesin komputasi umum seperti Spark, Hive, dan Trino—yang digunakan bersama Realtime Compute for Apache Flink dan E-MapReduce—terintegrasi secara mulus dengan Paimon. Dengan Apache Paimon, bangun data lake di OSS dengan cepat dan hubungkan ke MaxCompute untuk analitik. Penyaringan metadata lebih lanjut mengoptimalkan performa query dengan melewati file direktori OSS yang tidak diperlukan saat operasi baca.

Penerapan

  • Tabel eksternal Paimon tidak memperbarui schema secara otomatis saat schema file Paimon yang mendasarinya berubah.

  • Anda tidak dapat mengatur atribut cluster atau primary key pada tabel eksternal Paimon.

  • Tabel eksternal Paimon tidak mendukung query pada versi historis data.

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

  • Gunakan pernyataan INSERT INTO atau INSERT OVERWRITE untuk menulis data ke tabel eksternal Paimon. Namun, penulisan ke tabel Dynamic Bucket dan tabel Cross Partition tidak didukung.

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

  • MaxCompute dan OSS harus berada di wilayah yang sama.

  • Tipe data yang didukung.

Buat tabel eksternal Paimon

Struktur sintaksis

Untuk detail tentang sintaksis 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 lebih lanjut tentang parameter umum, lihat Parameter sintaksis dasar.

Menulis data

Untuk informasi lebih lanjut tentang sintaksis penulisan MaxCompute, lihat Sintaksis penulisan.

Analisis query

  • Logika pemisahan data (Split) tabel Paimon berbeda dari tabel MaxCompute native. Paimon menggunakan organisasi file internal dan mekanisme sharding tersendiri, yang tidak sepenuhnya selaras dengan parameter MaxCompute.

  • Untuk detail tentang sintaksis SELECT, lihat Deskripsi sintaksis query.

  • Untuk detail tentang mengoptimalkan rencana query, lihat Optimasi query.

  • Untuk detail tentang BadRowSkipping, lihat BadRowSkipping.

Contoh penggunaan

Langkah 1: Prasyarat

  1. Anda telah membuat project MaxCompute.

  2. Anda telah menyiapkan bucket OSS dan direktori OSS. Untuk informasi lebih lanjut, lihat Buat bucket dan Kelola folder.

    Karena MaxCompute hanya tersedia di wilayah tertentu, masalah konektivitas cross-region dapat terjadi. Kami menyarankan menggunakan bucket OSS di wilayah yang sama dengan project MaxCompute Anda.
  3. Otorisasi

    1. Anda memiliki izin untuk mengakses OSS. Akun Alibaba Cloud (akun utama), pengguna Resource Access Management (RAM), atau role RAM dapat mengakses tabel eksternal OSS. Untuk detail otorisasi, lihat Otorisasi mode STS untuk OSS.

    2. Anda memiliki izin CreateTable di project MaxCompute. Untuk detail tentang izin operasi tabel, lihat Izin MaxCompute.

Langkah 2: Siapkan data di Flink

Buat katalog Paimon dan tabel Paimon, lalu masukkan data ke dalam tabel seperti ditunjukkan pada contoh berikut.

Catatan

Jika data tabel Paimon sudah ada di OSS, lewati langkah ini.

  1. Buat Katalog Filesystem Paimon

    1. Masuk ke Konsol Flink, dan pilih wilayah di pojok kiri atas.

    2. Klik nama ruang kerja target. Di panel navigasi sebelah kiri, pilih Catalogs .

    3. Pada halaman Catalog List , klik Create Catalog di sebelah kanan. Pada kotak dialog Create Catalog , pilih Apache Paimon, klik Next , dan konfigurasikan parameter berikut:

      Parameter

      Wajib

      Deskripsi

      metastore

      Wajib.

      Jenis metastore. Pada contoh ini, pilih filesystem.

      catalog name

      Wajib

      Nama katalog kustom, misalnya paimon-catalog.

      warehouse

      Wajib

      Direktori gudang data di OSS. Pada contoh ini, gunakan oss://paimon-fs/paimon-test/.

      fs.oss.endpoint

      Wajib

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

      fs.oss.accessKeyId

      Wajib

      AccessKey ID yang diperlukan untuk mengakses OSS.

      fs.oss.accessKeySecret

      Wajib

      AccessKey Secret yang diperlukan untuk mengakses OSS.

  2. Buat tabel Paimon

    1. Masuk ke Konsol Flink, dan pilih wilayah di pojok kiri atas.

    2. Klik nama ruang kerja target, lalu pada panel navigasi di sebelah kiri, pilih Development > Scritps.

    3. Pada tab New Script, klik image untuk membuat script query baru.

      Masukkan perintah berikut dan klik Run.

      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. Jika pekerjaan SQL Anda dibatasi laju—misalnya, saat menjalankan pernyataan INSERT INTO ... VALUES ...—lakukan langkah berikut:

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

    2. Pada halaman Deployments, klik nama pekerjaan target untuk membuka halaman Configuration-nya.

    3. Untuk detail tentang mengonfigurasi parameter waktu proses pekerjaan, lihat Konfigurasi informasi penerapan pekerjaan.

Langkah 3: Buat tabel eksternal Paimon di MaxCompute

Jalankan kode 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>'
;

Pada kode di atas, table_path adalah path tabel Paimon yang dibuat di Flink, misalnya paimon-fs/paimon-test/default.db/test_tbl. Untuk mendapatkan path ini:

  1. Masuk ke Konsol Flink, dan pilih wilayah di pojok kiri atas.

  2. Klik nama ruang kerja target. Di panel navigasi sebelah kiri, pilih Catalogs .

Langkah 4: Muat data partition

Jika tabel eksternal OSS yang Anda buat memiliki partition, muat data partition secara terpisah. Untuk informasi lebih lanjut, lihat Sintaksis untuk memuat data partition untuk tabel eksternal OSS.

MSCK REPAIR TABLE oss_extable_paimon_pt ADD PARTITIONS;

Langkah 5: Baca tabel eksternal Paimon dari MaxCompute

Jalankan perintah berikut di MaxCompute untuk menjalankan query pada 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';

Hasilnya sebagai berikut:

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

Jika schema dalam file Paimon berbeda dari schema tabel eksternal:

  • Ketidaksesuaian jumlah kolom: Jika file Paimon memiliki lebih sedikit kolom dibandingkan definisi DDL tabel eksternal, nilai kolom yang hilang diisi dengan NULL saat pembacaan. Jika kolomnya lebih banyak, kolom tambahan akan dibuang.

  • Ketidaksesuaian tipe data: MaxCompute tidak mendukung pembacaan data STRING dari file Paimon ke kolom INT. MaxCompute mendukung pembacaan data INT ke kolom STRING, meskipun hal ini tidak disarankan.

Tipe data yang didukung

Untuk tipe data MaxCompute, lihat Edisi tipe data 1.0 dan Edisi tipe data 2.0.

Tipe data Paimon open source

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 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

Bilangan desimal eksak. Default adalah decimal(38,18). Anda dapat menyesuaikan precision dan scale.

  • precision: Jumlah digit maksimum. Rentang valid: 1 <= precision <= 38.

  • scale: Jumlah digit setelah titik desimal. Rentang valid: 0 <= scale <= 18.

VARCHAR(n)

VARCHAR(n)

Didukung

String karakter panjang variabel. n adalah panjangnya, berkisar antara 1 hingga 65535.

CHAR(n)

CHAR(n)

Didukung

String karakter panjang tetap. n adalah panjangnya, berkisar antara 1 hingga 255.

VARCHAR(MAX_LENGTH)

STRING

Didukung

Tipe string. Panjang maksimum adalah 8 MB.

DATE

DATE

Didukung

Format tanggal: yyyy-mm-dd.

TIME, TIME(p)

Tidak didukung

Tidak didukung

Tipe 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 (default adalah 0).

MaxCompute tidak memiliki tipe data yang sesuai.

TIMESTAMP, TIMESTAMP(p)

TIMESTAMP_NTZ

Didukung

Timestamp tanpa zona waktu, presisi hingga nanodetik.

Untuk membaca tipe ini, aktifkan sakelar mode native: SET odps.sql.common.table.jni.disable.native=true;

TIMESTAMP WITH LOCAL TIME_ZONE(9)

TIMESTAMP

Didukung

  • Tipe timestamp presisi hingga nanodetik, diformat sebagai yyyy-mm-dd hh:mm:ss.xxxxxxxxx.

  • Saat menulis nilai TIMESTAMP presisi rendah dari tabel sumber Paimon, terjadi pemotongan: presisi 0–3 dipotong menjadi 3 digit, 4–6 menjadi 6 digit, dan 7–9 menjadi 9 digit.

TIMESTAMP WITH LOCAL TIME_ZONE(9)

DATETIME

Tidak didukung

Tipe timestamp presisi hingga nanodetik.

Format: 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

MaxCompute tidak memiliki tipe data yang sesuai.

VARBINARY, VARBINARY(n), BYTES

BINARY

Didukung

String biner panjang variabel.

FAQ

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 membaca data TIMESTAMP_NTZ dalam mode JNI.

  • Solusi:

    Sebelum membaca dari tabel, nonaktifkan fitur Native dengan menjalankan perintah SET odps.sql.common.table.jni.disable.native=true;.

Referensi

Anda dapat membuat tabel eksternal Paimon MaxCompute di Flink sebagai katalog kustom, menulis data ke dalamnya, lalu menjalankan query dan mengonsumsi data Paimon dari MaxCompute. Untuk informasi lebih lanjut, lihat Buat tabel eksternal Paimon MaxCompute berdasarkan Flink.