全部产品
Search
文档中心

Hologres:Akses katalog Paimon menggunakan DLF

更新时间:Jan 01, 2026

Hologres V3.2 dan versi yang lebih baru memungkinkan Anda mengakses data katalog Paimon melalui Data Lake Formation (DLF). Fitur ini menyediakan antarmuka terpadu dan meningkatkan efisiensi manajemen metadata.

Informasi latar belakang

Alibaba Cloud Data Lake Formation (DLF) adalah platform terkelola penuh yang menyediakan metadata terpadu, penyimpanan data, dan manajemen data. Layanan ini menawarkan fitur seperti manajemen metadata, pengelolaan izin, dan optimasi penyimpanan. Dengan menyatukan metadata, format tabel data lake, dan penyimpanan data, DLF menyederhanakan Operasi dan Pemeliharaan (O&M) dalam membangun dan mengelola data lake, sehingga memungkinkan bisnis fokus pada inovasi dan wawasan data. Untuk informasi selengkapnya, lihat Apa itu Data Lake Formation?.

Fitur

  • Hologres 3.2 dan versi yang lebih baru mendukung fitur-fitur berikut:

    • Menghubungkan ke katalog Paimon di DLF melalui external database. Untuk informasi selengkapnya, lihat EXTERNAL DATABASE.

      • Anda dapat menggunakan CREATE/DROP EXTERNAL SCHEMA untuk membuat atau menghapus database di katalog Paimon secara cascade.

      • Anda dapat menggunakan CREATE/DROP EXTERNAL TABLE untuk membuat atau menghapus tabel di katalog Paimon secara cascade.

      • Anda dapat melihat semua database dan tabel di katalog Paimon.

    • Anda dapat membaca data dari tabel Paimon secara penuh atau inkremental menggunakan dynamic tables. Untuk informasi selengkapnya, lihat CREATE DYNAMIC TABLE.

    • Anda dapat mengumpulkan statistik untuk external tables menggunakan ANALYZE dan AUTO ANALYZE guna membantu pengoptimal menghasilkan rencana kueri optimal. Untuk informasi selengkapnya, lihat ANALYZE dan AUTO ANALYZE.

    • Anda dapat mencerminkan data dari external tables.

    • Time Travel: Anda dapat melakukan kueri snapshot historis tabel Paimon berdasarkan timestamp, versi, atau tag.

    • Kueri branch: Anda dapat melakukan kueri data branch Paimon dan snapshot historis berdasarkan branch.

    • Anda dapat melakukan kueri tabel sistem Paimon, seperti tabel Snapshots dan Tags.

  • Hologres 4.0 dan versi yang lebih baru mendukung operasi DML berikut:

    • Anda dapat melakukan penulisan konkuren ke tabel primary key Paimon menggunakan INSERT INTO atau INSERT OVERWRITE. Proses penulisan dioptimalkan untuk mendukung shuffling berdasarkan bucket sebelum penulisan, sehingga mengurangi pembentukan small files.

    • Mekanisme caching berbasis memori disediakan untuk mendukung penulisan ke tabel Paimon yang memerlukan caching, seperti tabel dengan First Row Merge Engine, tabel yang menghasilkan Changelog menggunakan mekanisme lookup, atau tabel dengan Deletion Vector yang diaktifkan.

    • Anda dapat menggunakan operasi UPDATE dan DELETE pada tabel Paimon.

    • Mulai dari V3.2.6 dan V4.0.6, Anda dapat membaca data dari tag yang sesuai dengan snapshot Paimon yang telah kedaluwarsa.

Prasyarat

Batasan

  • Anda hanya dapat mengakses layanan DLF di wilayah yang sama dengan instans Hologres Anda.

  • Anda tidak dapat menggunakan fitur akselerasi data lake OSS di HoloWeb untuk membuat katalog Paimon DLF secara visual.

  • Hanya external tables Paimon yang dipetakan melalui external database yang mendukung kueri Time Travel, kueri branch, dan pencermatan data.

  • Kueri Time Travel tidak didukung untuk tabel yang telah mengalami schema evolution.

  • Dynamic tables tidak mendukung kueri Time Travel untuk tabel dan branch Paimon.

  • Pencermatan data untuk external tables tidak mendukung tabel primary key Paimon.

  • Membaca data dari partisi default tabel Paimon tidak didukung, termasuk partisi dengan nilai kosong atau NULL.

  • Fitur akselerasi data lake tidak dapat diaktifkan untuk instans secondary read-only.

  • Perintah TRUNCATE tidak dapat dieksekusi pada external tables. Sebagai gantinya, Anda dapat menggunakan INSERT OVERWRITE untuk memasukkan data kosong.

  • Menulis data ke tabel dynamic bucket Paimon tidak didukung. Tabel-tabel ini adalah tabel yang dibuat tanpa menentukan parameter bucket atau dengan bucket = -1.

  • Operasi UPDATE hanya didukung untuk tabel primary key Paimon dengan merge engine deduplicate atau partial-update. Memperbarui primary key tidak didukung.

  • Operasi DELETE hanya didukung untuk tabel primary key Paimon yang menggunakan merge engine deduplicate atau merge engine partial-update dengan properti partial-update.remove-record-on-delete yang diaktifkan.

  • External tables tidak mendukung transaksi DML campuran. Protokol two-phase commit hanya diimplementasikan dalam satu operasi DML untuk memastikan atomicity penulisan terdistribusi.

Petakan katalog Paimon menggunakan external database

Buat external database (mode SLR)

Service-linked role (SLR) adalah peran RAM yang entitas tepercayanya merupakan layanan Alibaba Cloud. SLR dirancang untuk menyelesaikan masalah otorisasi dalam akses lintas layanan. Dalam kebanyakan kasus, SLR dibuat atau dihapus secara otomatis saat Anda menggunakan fitur tertentu, sehingga Anda tidak perlu membuat atau menghapusnya secara manual. SLR membantu mengonfigurasi izin yang diperlukan agar layanan Alibaba Cloud dapat berjalan sebagaimana mestinya serta mencegah risiko akibat kesalahan operasi. Untuk informasi selengkapnya, lihat Service-linked roles.

Skenario

Mode SLR cocok untuk skenario di mana Anda menggunakan identitas saat ini untuk mengakses data di external database. Secara default, Hologres menggunakan SLR dan identity pass-through untuk mengimplementasikan akses lintas layanan.

Prosedur

  1. Untuk instans yang baru dibeli atau instans yang ditingkatkan ke Hologres V2.2 atau versi yang lebih baru, sistem akan secara otomatis membuat SLR. Anda dapat melewati langkah ini.

    Catatan

    Untuk instans Hologres sebelum V2.2, buka halaman Quick Authorization for Access Control untuk membuat SLR.

  2. Hubungkan ke instans Hologres dan buat external database.

    CREATE EXTERNAL DATABASE EXT_DATABASE_NAME WITH
      catalog_type 'paimon',
      metastore_type 'dlf-rest',
      dlf_catalog 'DLF_CATALOG_NAME',
      comment 'paimon catalog on dlf';
  3. Lihat skema dan tabel di external database.

    -- Kueri skema di database eksternal.
    SELECT * FROM hologres.hg_external_schemas('<span class="var-span" contenteditable="true" data-var="EXT_DATABASE_NAME"><ext_database_name>'</span>);
    
    -- Kueri tabel di suatu skema.
    SELECT * FROM hologres.hg_external_tables ('<span class="var-span" contenteditable="true" data-var="EXT_DATABASE_NAME"><ext_database_name>'</span>, '<span class="var-span" contenteditable="true" data-var="EXT_SCHEMA_NAME"><ext_schema_name>'</span>);
  4. Lakukan kueri data tabel.

    SELECT * FROM EXT_DATABASE_NAME.EXT_SCHEMA_NAME.EXT_TABLE_NAME;

Buat external database (mode STS)

Alibaba Cloud Security Token Service (STS) adalah layanan yang mengelola izin akses temporary. RAM menyediakan dua jenis identitas: RAM user dan RAM role. RAM role tidak memiliki kredensial identitas permanen, melainkan memperoleh kredensial identitas temporary, yang disebut token STS, dari STS. Anda dapat menyesuaikan periode validitas dan izin akses token STS tersebut. Untuk informasi selengkapnya, lihat Apa itu STS?.

Skenario

Mode STS cocok untuk skenario di mana Anda menggunakan akses cross-account atau akun kustom Hologres (akun BASIC) untuk mengakses data di external database.

Prosedur

  1. Login ke Konsol RAM, buat RAM role, dan berikan izin AliyunDLFFullAccess atau AliyunDLFReadOnlyAccess kepada role tersebut. Untuk informasi selengkapnya, lihat Buat RAM role dan berikan izin kepadanya.

  2. Tambahkan kebijakan kepercayaan untuk mengizinkan RAM role diasumsikan oleh layanan Alibaba Cloud tepercaya, yaitu Hologres. Untuk informasi selengkapnya, lihat Ubah kebijakan kepercayaan RAM role.

    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
            "Service": [
              "hologres.aliyuncs.com"
            ]
          }
        }
      ],
      "Version": "1"
    }
  3. Login ke Konsol Data Lake Formation. Di katalog tujuan, berikan izin kepada RAM role untuk mengakses database dan tabel.

  4. Di Hologres, buat external database dan tentukan RAM role di atas dalam kebijakan autentikasi.

    CREATE EXTERNAL DATABASE <ext_database_name> WITH
      catalog_type 'paimon'
      metastore_type 'dlf-rest'
      dlf_catalog 'paimon_catalog' 
      rolearn 'acs:ram::106380604****:role/***-ramrole'
      comment 'katalog paimon di dlf'
      ;
  5. Di Hologres, buat pemetaan pengguna untuk mengaitkan RAM user atau akun BASIC yang perlu mengakses katalog DLF dengan RAM role.

    CREATE USER MAPPING FOR "<RAM user | basic account>"
    EXTERNAL DATABASE EXT_DATABASE_NAME
    OPTIONS
    (
       rolearn 'acs:ram::10638060***:role/***ramrole'
    );
    Catatan
  6. Login ke Konsol manajemen Hologres sebagai RAM user atau hubungkan ulang ke instans Hologres sebagai akun BASIC. Kemudian, eksekusi pernyataan kueri SQL berikut.

    SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;

Kumpulkan statistik untuk external tables

Perintah ANALYZE dan AUTO ANALYZE mengumpulkan statistik tentang konten tabel di database. Pengoptimal menggunakan statistik ini untuk menghasilkan rencana kueri optimal dan meningkatkan efisiensi kueri. Untuk informasi selengkapnya, lihat ANALYZE dan AUTO ANALYZE.

-- Perbarui statistik tabel. Secara default, statistik semua kolom di tabel dikumpulkan.
analyze <ext_database_name>.<ext_schema_name>.<ext_table_name>;

-- Perbarui statistik kolom tertentu. Lebih banyak data disampel dibandingkan saat memperbarui statistik seluruh tabel, sehingga statistik menjadi lebih akurat. Ini terutama digunakan untuk memperbarui kolom kondisional.
analyze <ext_database_name>.<ext_schema_name>.<ext_table_name>(<colname>, <colname>);

-- Aktifkan Auto Analyze.
ALTER EXTERNAL DATABASE <ext_database_name> WITH enable_auto_analyze 'true';

Kueri Time Travel

Hologres V3.2 dan versi yang lebih baru mendukung Time Travel. Anda dapat melakukan kueri snapshot historis tabel Paimon berdasarkan timestamp, versi, atau tag. Anda juga dapat melakukan kueri tabel sistem Paimon Snapshots dan Tags di Hologres untuk mendapatkan detail snapshot tabel tujuan. Untuk informasi selengkapnya tentang tabel sistem, lihat Paimon System Tables.

Kueri tabel sistem Paimon Snapshots

SELECT * FROM hologres.hg_list_snapshots('EXT_DATABASE_NAME.<span class="var-span" contenteditable="true" data-var="EXT_SCHEMA_NAME">EXT_SCHEMA_NAME.EXT_TABLE_NAME'</span>);

Tabel berikut menjelaskan pemetaan antara bidang di tabel sistem Snapshots dan bidang di tabel sistem Paimon.

Bidang tabel sistem Snapshots

Type

Deskripsi

Bidang tabel sistem Paimon yang sesuai

branch_name

TEXT

Nama cabang.

branch_name

snapshot_id

TEXT

ID snapshot.

snapshot_id

schema_id

TEXT

ID skema tabel.

schema_id

commit_kind

TEXT

Jenis commit data tabel.

commit_kind

commit_time

TIMESTAMPTZ

Waktu commit.

commit_time

extend_info

TEXT (JSON)

Properti tersisa dari tabel sistem Paimon Snapshots.

Properti tersisa dari tabel sistem Paimon Snapshots

Anda juga dapat menggunakan fungsi hologres.hg_list_versions untuk melakukan kueri tabel sistem Paimon Snapshots. Untuk kueri tabel Paimon, versi berkorespondensi dengan ID snapshot.

SELECT * FROM hologres.hg_list_versions('EXT_DATABASE_NAME.<span class="var-span" contenteditable="true" data-var="EXT_SCHEMA_NAME">EXT_SCHEMA_NAME.EXT_TABLE_NAME'</span>);

Kueri tabel sistem Paimon Tag

SELECT * FROM hologres.hg_list_tags('<span class="var-span" contenteditable="true" data-var="EXT_DATABASE_NAME"><ext_database_name>.<ext_schema_name>.<ext_table_name>'</span>);

Tabel berikut menjelaskan pemetaan antara bidang di tabel sistem Tag dan bidang di tabel sistem Paimon.

Bidang tabel sistem Tag

Tipe

Deskripsi

Bidang tabel sistem Paimon yang sesuai

branch_name

TEXT

Nama cabang.

branch_name

tag_name

TEXT

Nama tag.

tag_name

snapshot_id

TEXT

ID snapshot.

snapshot_id

schema_id

TEXT

ID skema tabel.

schema_id

commit_time

TIMESTAMPTZ

Waktu commit.

commit_time

extend_info

TEXT (JSON)

Properti tersisa dari tabel sistem Paimon Tag.

Properti tersisa dari tabel sistem Paimon Tag

Kueri snapshot Paimon historis berdasarkan timestamp

SELECT * FROM EXT_DATABASE_NAME.EXT_SCHEMA_NAME.EXT_TABLE_NAME FOR TIMESTAMP AS OF 'TIMESTAMP';

Kueri snapshot Paimon historis berdasarkan versi

Untuk tabel Paimon, versi berkorespondensi dengan ID snapshot.

SELECT * FROM '<span class="var-span" contenteditable="true" data-var="EXT_DATABASE_NAME"><ext_database_name>.<ext_schema_name>.<ext_table_name>'</span> FOR VERSION AS OF '<span class="var-span" contenteditable="true" data-var="VERSION"><version>'</span>;

Kueri snapshot Paimon historis berdasarkan tag

SELECT * FROM EXT_DATABASE_NAME.EXT_SCHEMA_NAME.EXT_TABLE_NAME FOR TAG AS OF 'TAG';

Kueri branch

Hologres V3.2 dan versi yang lebih baru mendukung kueri data dari branch tertentu tabel Paimon dan mendukung properti fallback branch. Untuk informasi selengkapnya tentang branch Paimon, lihat Manage Branch.

Kueri tabel sistem Branch

SELECT * FROM hologres.hg_list_branches('<span class="var-span" contenteditable="true" data-var="EXT_DATABASE_NAME"><ext_database_name>.<ext_schema_name>.<ext_table_name>'</span>);

Tabel berikut menjelaskan pemetaan antara bidang di tabel sistem Branch dan bidang di tabel sistem Paimon.

Bidang

Tipe

Deskripsi

Bidang tabel sistem Paimon yang sesuai

branch_name

TEXT

Nama cabang.

branch_name

create_time

TIMESTAMPTZ

Waktu pembuatan cabang.

create_time

extend_info

TEXT (JSON)

Properti tersisa dari tabel sistem Paimon Branch.

Properti tersisa dari tabel sistem Paimon Branch

Kueri data dari branch tertentu

SELECT * FROM EXT_DATABASE_NAME.EXT_SCHEMA_NAME.EXT_TABLE_NAME FOR branch AS OF 'TAG';
Catatan

Jika properti scan.fallback-branch ditetapkan untuk tabel Paimon dan partisi tidak ada saat pekerjaan kueri membaca data dari branch saat ini, pembaca akan mencoba membaca data partisi dari fallback branch. Untuk informasi selengkapnya tentang fallback branches, lihat Manage Branch.

Kueri data snapshot historis dari branch tertentu

-- Kueri berdasarkan timestamp.
SELECT * FROM '<span class="var-span" contenteditable="true" data-var="EXT_DATABASE_NAME"><ext_database_name>.<ext_schema_name>.<ext_table_name>'</span> FOR branch AS OF '<span class="var-span" contenteditable="true" data-var="BRANCH_NAME"><branch_name>'</span> TIMESTAMP AS OF '<span class="var-span" contenteditable="true" data-var="TIMESTAMP"><timestamp>'</span>;

-- Kueri berdasarkan tag.
SELECT * FROM '<span class="var-span" contenteditable="true" data-var="EXT_DATABASE_NAME"><ext_database_name>.<ext_schema_name>.<ext_table_name>'</span> FOR branch AS OF '<span class="var-span" contenteditable="true" data-var="BRANCH_NAME"><branch_name>'</span> TAG AS OF '<span class="var-span" contenteditable="true" data-var="TAG_NAME"><tag_name>'</span>;

Akselerasi citra tabel Lakehouse

Hologres V3.2 dan versi yang lebih baru menyediakan fitur pencermatan tabel data lake untuk mempercepat kueri data di data lakes. Fitur ini mendukung pencermatan metadata dan data serta dapat menyinkronkan perubahan dari sumber data eksternal ke Hologres secara near-real time atau pada interval tertentu. Fitur ini juga mendukung pencermatan penuh tabel dan pencermatan parsial tabel partisi. Anda dapat menggunakan parameter untuk mengontrol cakupan data yang dicerminkan secara fleksibel. Untuk informasi selengkapnya, lihat Pencermatan tabel data lake.

Akses tabel Paimon menggunakan foreign tables

  1. Buat server asing.

    Untuk informasi selengkapnya tentang operasi pada foreign servers, lihat Operasi tambahan pada foreign servers (SQL).

    Sintaksis DLF

    Catatan

    Berlaku untuk DLF V2.5 dan versi yang lebih baru.

    Sintaksis SQL adalah sebagai berikut:

    -- create foreign server
    CREATE SERVER IF NOT EXISTS SERVER_NAME FOREIGN DATA WRAPPER dlf_fdw OPTIONS (
        catalog_type 'paimon',
        metastore_type 'dlf-rest', 
        dlf_catalog 'DLF_CATALOG_NAME'
    );

    Sintaksis DLF 1.0

    Catatan

    Berlaku untuk DLF V1.0.

    Sintaksis SQL adalah sebagai berikut:

    -- create foreign server
    CREATE SERVER IF NOT EXISTS SERVER_NAME FOREIGN DATA WRAPPER dlf_fdw OPTIONS (
      dlf_region '',
      dlf_endpoint 'dlf-share..aliyuncs.com',
      oss_endpoint 'oss-REGION_ID-internal.aliyuncs.com',
      dlf_catalog 'dlf_catalog_name'                 
    );
  2. Buat tabel asing.

    • Gunakan IMPORT FOREIGN SCHEMA

      Untuk informasi selengkapnya tentang cara menggunakan IMPORT FOREIGN SCHEMA, lihat IMPORT FOREIGN SCHEMA.

      • Buat foreign table menggunakan IMPORT FOREIGN SCHEMA

        -- Buat tabel asing menggunakan IMPORT FOREIGN SCHEMA.
        IMPORT FOREIGN SCHEMA <dlf_db_name>
        FROM SERVER <server_name> 
        INTO <holo_schema_name> 
        options (if_table_exist 'update');
      • Buat foreign table dengan menentukan nama tabel

        IMPORT FOREIGN SCHEMA <dlf_db_name>
        limit to (table_name[,....]) 
        FROM SERVER <server_name> 
        into <holo_schema_name>
        options (if_table_exist 'update');
    • Pernyataan CREATE FOREIGN TABLE

      Untuk informasi selengkapnya tentang cara menggunakan CREATE FOREIGN TABLE, lihat CREATE FOREIGN TABLE.

      CREATE FOREIGN TABLE FOREIGN_TABLE_NAME
      (
        column_name data_type
        [, ... ]
      ) 
      SERVER SERVER_NAME
      options
      (
        schema_name 'DLF_DB_NAME',
        table_name 'DLF_TABLE_NAME'
      );

Akses tabel Paimon menggunakan dynamic table

Dynamic table dapat secara otomatis memproses dan menyimpan hasil agregasi data dari satu atau beberapa tabel dasar. Dynamic table memiliki kebijakan refresh data bawaan. Anda dapat menetapkan kebijakan refresh data yang berbeda sesuai kebutuhan untuk mengimplementasikan aliran data otomatis dari tabel dasar ke dynamic table, sehingga memenuhi kebutuhan bisnis untuk pengembangan terpadu, aliran data otomatis, dan ketepatan waktu pemrosesan. Hologres V3.0 dan versi yang lebih baru memungkinkan Anda menggunakan external tables MaxCompute dan external tables DLF sebagai tabel dasar dynamic table. Untuk informasi selengkapnya, lihat Dynamic tables.

Penyegaran Penuh

CREATE DYNAMIC TABLE paimon_dt_table
WITH (
      auto_refresh_mode='full',
      freshness='3 minutes'
)AS SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;

Penyegaran inkremental

CREATE DYNAMIC TABLE paimon_dt_table_increamental
WITH (
      auto_refresh_mode='incremental',
      freshness='3 minutes'
)AS SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;

Refresh otomatis

CREATE DYNAMIC TABLE paimon_dt_table_auto
WITH (
      auto_refresh_mode='auto',
      freshness='3 minutes'
)AS SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;

Operasi DML

INSERT INTO

-- Gunakan SQL Hologres untuk membuat tabel primary key Paimon dan memasukkan data.

CREATE EXTERNAL TABLE  <ext_database_name>.<ext_schema_name>.<ext_table_name> (
id BIGINT,
customer_id BIGINT,
item TEXT,
amount FLOAT,
dt TEXT,
PRIMARY KEY (id)
)
WITH (
"table_format" = 'paimon',
"file_format" = 'orc',
"merge-engine" = 'deduplicate', -- Contoh merge engine. Sesuaikan sesuai kebutuhan.
"bucket" = '4' -- Contoh jumlah bucket.
);

INSERT INTO <ext_database_name>.<ext_schema_name>.<ext_table_name> (id, customer_id, item, amount, dt) VALUES
(1, 1001, 'apple', 3.50, '2025-09-10'),
(2, 1002, 'banana', 2.00, '2025-09-10'),
(3, 1003, 'orange', 4.20, '2025-09-11');

INSERT OVERWRITE

-- Gunakan SQL Hologres untuk membuat tabel append-only Paimon dan memasukkan data.

CREATE EXTERNAL TABLE <ext_database_name>.<ext_schema_name>.<ext_table_name> (
id BIGINT,
name TEXT,
amount FLOAT8,
dt TEXT
)
LOGICAL PARTITION BY LIST(dt)
WITH (
"table_format" = 'paimon',
"file_format" = 'parquet',
"merge-engine" = 'deduplicate', 
"bucket-key" = 'id',
"bucket" = '2'
);

INSERT OVERWRITE <ext_database_name>.<ext_schema_name>.<ext_table_name>(id, name, amount, dt) VALUES
(1, 'Alice', 100.50, '2025-09-01'),
(2, 'Bob', 200.00, '2025-09-01'),
(3, 'Carol', 150.75, '2025-09-02');

UPDATE

UPDATE <ext_database_name>.<ext_schema_name>.<ext_table_name> SET amount= 5 where id= 1;

DELETE

DELETE FROM <ext_database_name>.<ext_schema_name>.<ext_table_name> WHERE id = 2;