全部产品
Search
文档中心

MaxCompute:Tabel eksternal Paimon

更新时间:Jan 01, 2026

Anda dapat membuat tabel eksternal Paimon di MaxCompute untuk memetakan ke folder tabel Paimon di Object Storage Service (OSS) dan mengakses data dalam folder tersebut. Topik ini menjelaskan cara membuat tabel eksternal Paimon dan mengakses datanya menggunakan MaxCompute.

Pengenalan fungsi

Apache Paimon adalah format penyimpanan data lake yang mendukung pemrosesan streaming maupun batch, menyediakan penulisan ber-throughput tinggi dan kueri berlatensi rendah. Paimon terintegrasi penuh dengan mesin komputasi umum seperti Spark, Hive, dan Trino, yang tersedia dalam layanan seperti 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 mengoptimalkan performa kueri dengan mengurangi jumlah file yang dibaca dari folder OSS yang tidak diperlukan selama pemrosesan tugas.

Penerapan

  • Skema tabel eksternal Paimon tidak diperbarui secara otomatis untuk mencerminkan perubahan skema pada file Paimon.

  • Anda tidak dapat mengatur properti kluster atau primary key untuk tabel eksternal Paimon.

  • Tabel eksternal Paimon tidak mendukung fitur seperti kueri versi data historis.

  • 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. Penulisan data ke tabel bucket dinamis atau tabel lintas partisi tidak didukung.

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

  • MaxCompute dan OSS harus berada di wilayah yang sama.

Tipe data yang didukung

Untuk informasi lebih lanjut tentang tipe data MaxCompute, lihat Tipe data (Versi 1.0) dan Tipe data (Versi 2.0).

Tipe data Paimon open source

Tipe data MaxCompute V2.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 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)

已开通

Bilangan desimal presisi tinggi. Nilai default adalah decimal(38,18). Anda dapat menyesuaikan nilai precision dan scale.

  • precision: menunjukkan jumlah maksimum digit yang dapat direpresentasikan. Nilainya harus berada dalam rentang 1 <= precision <= 38.

  • scale: menunjukkan jumlah digit pada bagian pecahan. Nilainya harus berada dalam rentang 0 <= scale <= 18.

VARCHAR(n)

VARCHAR(n)

已开通

Tipe karakter panjang variabel. n menunjukkan panjang, yang berkisar antara 1 hingga 65.535.

CHAR(n)

CHAR(n)

已开通

Tipe karakter panjang tetap. n menunjukkan panjang, yang berkisar antara 1 hingga 255.

VARCHAR(MAX_LENGTH)

STRING

已开通

Tipe string. Panjang maksimum adalah 8 MB.

DATE

DATE

已开通

Tipe tanggal. Formatnya adalah yyyy-mm-dd.

TIME, TIME(p)

Not supported

未开通

Tipe data TIME Paimon adalah tipe waktu tanpa zona waktu. Terdiri atas jam, menit, dan detik, dengan presisi hingga nanodetik.

TIME(p) menunjukkan presisi bagian pecahan, yang dapat berupa bilangan bulat dari 0 hingga 9. Nilai default-nya adalah 0.

Tidak tersedia tipe yang sesuai di MaxCompute.

TIMESTAMP, TIMESTAMP(p)

TIMESTAMP_NTZ

已开通

Tipe timestamp tanpa zona waktu, dengan presisi hingga nanodetik.

Untuk membaca tabel, aktifkan switch native: SET odps.sql.common.table.jni.disable.native=true;

TIMESTAMP WITH LOCAL TIME_ZONE(9)

TIMESTAMP

已开通

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

  • Untuk tabel sumber Paimon dengan tipe TIMESTAMP presisi rendah, nilainya dipotong saat penulisan data. Nilai dengan presisi 0 hingga 3 dipotong menjadi 3 tempat desimal. Nilai dengan presisi 4 hingga 6 dipotong menjadi 6 tempat desimal. Nilai dengan presisi 7 hingga 9 dipotong menjadi 9 tempat desimal.

TIMESTAMP WITH LOCAL TIME_ZONE(9)

DATETIME

未开通

Tipe timestamp dengan presisi hingga nanodetik.

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

BOOLEAN

BOOLEAN

已开通

Tipe BOOLEAN.

ARRAY

ARRAY

已开通

Tipe kompleks.

MAP

MAP

已开通

Tipe kompleks.

ROW

STRUCT

已开通

Tipe kompleks.

MULTISET<t>

Not supported

未开通

Tidak tersedia tipe yang sesuai di MaxCompute.

VARBINARY, VARBINARY(n), BYTES

BINARY

已开通

Tipe data string biner panjang variabel.

Buat tabel eksternal Paimon

Sintaks

Untuk informasi lebih lanjut tentang sintaks tabel eksternal dengan format berbeda, 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 sintaks dasar.

Menulis data

Untuk informasi lebih lanjut tentang sintaks penulisan MaxCompute, lihat Sintaks penulisan.

Kueri dan analisis

  • Untuk informasi lebih lanjut tentang sintaks SELECT, lihat Sintaks kueri.

  • Untuk informasi lebih lanjut tentang optimasi rencana kueri, lihat Optimasi kueri.

  • Untuk informasi lebih lanjut tentang BadRowSkipping, lihat BadRowSkipping.

Contoh

Langkah 1: Prasyarat

  1. Anda telah membuat proyek MaxCompute.

  2. Siapkan bucket dan folder OSS. Untuk informasi lebih lanjut, lihat Buat bucket dan Kelola folder.

    MaxCompute hanya tersedia di beberapa wilayah. Untuk mencegah masalah konektivitas data, gunakan bucket OSS yang berada di wilayah yang sama dengan proyek MaxCompute Anda.
  3. Otorisasi

    1. Anda harus memiliki izin untuk mengakses OSS. Anda dapat menggunakan Akun Alibaba Cloud, Pengguna RAM, atau Peran RAM untuk mengakses tabel eksternal OSS. Untuk informasi lebih lanjut tentang otorisasi, lihat Otorisasi STS untuk OSS.

    2. Anda harus memiliki izin `CreateTable` di proyek MaxCompute. Untuk informasi lebih lanjut 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 tersebut. Contoh berikut menunjukkan caranya.

Catatan

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

  1. Buat Katalog Filesystem Paimon

    1. Masuk ke Konsol Flink, lalu 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 , lalu konfigurasikan parameter berikut:

      Parameter

      Wajib

      Deskripsi

      metastore

      Wajib

      Jenis metastore. Dalam contoh ini, pilih filesystem.

      catalog name

      Wajib

      Nama katalog kustom. Misalnya, paimon-catalog.

      warehouse

      Wajib

      Direktori gudang data yang ditentukan di OSS. Misalnya, oss://paimon-fs/paimon-test/.

      fs.oss.endpoint

      Wajib

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

      fs.oss.accessKeyId

      Wajib

      ID AccessKey yang diperlukan untuk mengakses layanan OSS.

      fs.oss.accessKeySecret

      Wajib

      Rahasia AccessKey yang diperlukan untuk mengakses layanan OSS.

  2. Buat tabel Paimon

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

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

    3. Pada tab New Script, Anda dapat mengklik image untuk membuat skrip kueri baru.

      Masukkan perintah berikut lalu 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 merupakan pekerjaan aliran bounded, misalnya pekerjaan yang mengeksekusi 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 informasi lebih lanjut tentang cara mengonfigurasi parameter waktu proses untuk pekerjaan, lihat Konfigurasi informasi penerapan pekerjaan.

Langkah 3: Buat tabel eksternal Paimon di MaxCompute

Di MaxCompute, jalankan pernyataan SQL berikut untuk membuat tabel eksternal Paimon MaxCompute.

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 pernyataan di atas, table_path adalah path ke tabel Paimon Anda di Flink, misalnya paimon-fs/paimon-test/default.db/test_tbl. Untuk mendapatkan path tersebut, lakukan langkah-langkah berikut:

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

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

Langkah 4: Impor data partisi

Jika tabel eksternal OSS yang Anda buat adalah tabel partisi, Anda juga harus mengimpor data partisinya. Untuk informasi lebih lanjut, lihat Sintaks untuk menambahkan data partisi ke tabel eksternal OSS.

MSCK REPAIR TABLE oss_extable_paimon_pt ADD PARTITIONS;

Langkah 5: Baca tabel eksternal Paimon menggunakan MaxCompute

Di MaxCompute, jalankan pernyataan berikut untuk mengkueri tabel eksternal Paimon MaxCompute `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 tidak sesuai dengan skema tabel eksternal:

  • Jumlah kolom tidak sesuai: Jika file Paimon berisi lebih sedikit kolom daripada skema tabel eksternal, kolom yang hilang diisi dengan nilai NULL saat data dibaca. Jika file Paimon berisi lebih banyak kolom, data kolom tambahan akan dibuang.

  • Tipe kolom tidak sesuai: MaxCompute tidak mengizinkan Anda menggunakan tipe `INT` untuk membaca data `STRING` dari file Paimon. Anda dapat menggunakan tipe `STRING` untuk membaca data `INT`, tetapi praktik ini tidak disarankan.

FAQ

Mengapa terjadi error kSIGABRT saat saya membaca data dari 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 data tipe TIMESTAMP_NTZ menggunakan mode Java Native Interface (JNI).

  • Solusi:

    Sebelum membaca data dari tabel, aktifkan switch native dengan menjalankan pernyataan berikut: SET odps.sql.common.table.jni.disable.native=true;.

Referensi

Anda dapat membuat tabel eksternal Paimon MaxCompute di Flink menggunakan katalog kustom. Setelah data ditulis ke tabel tersebut, Anda dapat mengkueri dan mengonsumsi data Paimon menggunakan MaxCompute. Untuk informasi lebih lanjut, lihat Buat tabel eksternal Paimon MaxCompute menggunakan Flink.