All Products
Search
Document Center

MaxCompute:Tabel eksternal Paimon

Last Updated:Feb 07, 2026

MaxCompute mendukung pembuatan tabel eksternal Paimon yang memetakan ke direktori tabel Paimon yang disimpan di bucket OSS dan mengakses datanya. Topik ini menjelaskan cara membuat tabel eksternal Paimon dan melakukan kueri terhadapnya dari MaxCompute.

Pengenalan fitur

Apache Paimon adalah format penyimpanan data lake terpadu untuk beban kerja batch dan streaming, yang menawarkan penulisan ber-throughput tinggi dan kueri 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, Anda dapat dengan cepat membangun data lake di OSS dan menghubungkannya ke MaxCompute untuk analitik. Penyaringan metadata lebih lanjut mengoptimalkan performa kueri dengan melewati file direktori OSS yang tidak diperlukan selama operasi baca.

Penerapan

  • Tabel eksternal Paimon tidak memperbarui skema mereka secara otomatis ketika skema file Paimon yang mendasarinya berubah.

  • Anda tidak dapat mengatur atribut kluster atau kunci primer pada tabel eksternal Paimon.

  • Tabel eksternal Paimon tidak mendukung kueri terhadap versi historis data.

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

  • Anda dapat menggunakan 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 kueri

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

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

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

  • Untuk detail tentang BadRowSkipping, lihat BadRowSkipping.

Contoh penggunaan

Langkah 1: Prasyarat

  1. Anda telah membuat proyek 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 proyek 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 proyek 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

      ID AccessKey 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, Anda dapat mengklik image untuk membuat skrip kueri 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-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 partisi

Jika tabel eksternal OSS yang Anda buat dipartisi, Anda harus memuat data partisi secara terpisah. Untuk informasi lebih lanjut, lihat Sintaksis untuk memuat data partisi 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 melakukan kueri terhadap 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 skema dalam file Paimon berbeda dari skema tabel eksternal:

  • Ketidaksesuaian jumlah kolom: Jika file Paimon memiliki kolom lebih sedikit daripada yang didefinisikan dalam DDL tabel eksternal, nilai kolom yang hilang diisi dengan NULL selama pembacaan. Jika memiliki kolom 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 melakukan kueri dan mengonsumsi data Paimon dari MaxCompute. Untuk informasi lebih lanjut, lihat Buat tabel eksternal Paimon MaxCompute berdasarkan Flink.