All Products
Search
Document Center

Data Lake Formation:Akses DLF dari Hologres

Last Updated:Nov 11, 2025

Hologres V3.2 dan versi yang lebih baru mendukung akses ke Katalog Data Lake Formation (DLF) melalui Paimon REST. Fitur ini menyediakan antarmuka terpadu dan meningkatkan efisiensi manajemen metadata.

Fitur

  • Anda dapat mengakses Katalog DLF menggunakan database eksternal. Untuk informasi selengkapnya, lihat EXTERNAL DATABASE.

    • Anda dapat membuat atau menghapus database di katalog secara bertingkat menggunakan CREATE EXTERNAL SCHEMA atau DROP EXTERNAL SCHEMA.

    • Anda dapat membuat atau menghapus tabel di katalog secara bertingkat menggunakan CREATE EXTERNAL TABLE atau DROP EXTERNAL TABLE.

    • Anda dapat melihat semua database dan tabel di katalog.

  • Anda dapat membaca data dari tabel Paimon dalam mode penuh atau inkremental menggunakan tabel dinamis. Untuk informasi selengkapnya, lihat CREATE DYNAMIC TABLE.

  • Anda dapat mengumpulkan informasi statistik tentang tabel eksternal menggunakan ANALYZE dan AUTO ANALYZE. Hal ini membantu pengoptimal menghasilkan rencana kueri yang optimal. Untuk informasi selengkapnya, lihat ANALYZE and AUTO ANALYZE.

  • Anda dapat mencerminkan data dari tabel eksternal.

  • Time travel: Anda dapat mengkueri snapshot historis tabel Paimon berdasarkan stempel waktu, versi, atau tag.

  • Kueri cabang (branch): Anda dapat mengkueri data cabang Paimon dan snapshot historis berdasarkan cabang.

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

Prasyarat

Batasan

  • Menulis data ke tabel Paimon tidak didukung. Ini mencakup operasi seperti INSERT, UPDATE, DELETE, dan TRUNCATE.

  • Hanya tabel eksternal Paimon yang dipetakan menggunakan database eksternal yang mendukung kueri time travel, kueri cabang, dan pencerminkan data.

  • Kueri time travel tidak dapat dilakukan pada tabel yang telah mengalami evolusi skema atau pada tabel dinamis.

  • Pencerminkan data untuk tabel eksternal tidak mendukung tabel Paimon dengan kunci primer.

  • Membaca data dari partisi default tempat nilai kunci partisi adalah NULL atau kosong pada tabel Paimon tidak didukung.

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

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

Petakan katalog menggunakan database eksternal

Mode SLR

Peran terkait layanan (SLR) adalah Peran RAM yang entitas tepercayanya adalah layanan Alibaba Cloud. SLR digunakan untuk menyelesaikan masalah otorisasi akses lintas layanan. Dalam kebanyakan kasus, layanan Alibaba Cloud terkait secara otomatis membuat atau menghapus SLR saat Anda menggunakan fitur tertentu. Anda tidak perlu membuat atau menghapus SLR secara manual. SLR membantu Anda mengonfigurasi izin yang diperlukan agar layanan Alibaba Cloud dapat berjalan dengan baik dan menghindari risiko akibat kesalahan operasi. Untuk informasi selengkapnya, lihat Service-linked Role.

Skenario

Mode SLR cocok untuk skenario di mana Anda menggunakan identitas saat ini untuk mengakses data di database eksternal. Secara default, Hologres menggunakan SLR dan transmisi langsung identitas untuk menerapkan akses lintas layanan.

Prosedur

  1. Sambungkan ke instans Hologres dan buat database eksternal.

    CREATE EXTERNAL DATABASE <ext_database_name> WITH
      catalog_type 'paimon'
      metastore_type 'dlf-rest'
      dlf_catalog '<dlf_catalog_name>' 
      comment 'Catalog on dlf'
      ;
  2. Lihat skema dan tabel di database eksternal.

    -- Query the schemas in the external database.
    SELECT * FROM hologres.hg_external_schemas('<ext_database_name>');
    
    -- Query the tables in a schema.
    SELECT * FROM hologres.hg_external_tables ('<ext_database_name>', '<ext_schema_name>');
  3. Kueri data di tabel.

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

Mode STS

Alibaba Cloud Security Token Service (STS) adalah layanan yang mengelola izin akses sementara. Resource Access Management (RAM) menyediakan dua jenis identitas: Pengguna RAM dan Peran RAM. Peran RAM tidak memiliki kredensial identitas permanen. Peran tersebut hanya dapat memperoleh kredensial identitas sementara, yaitu token Layanan Token Keamanan (token STS), dari STS. Anda dapat menyesuaikan periode validitas dan izin akses token STS. Untuk informasi selengkapnya, lihat What is STS?.

Skenario

Mode STS cocok untuk skenario yang melibatkan akses lintas akun atau mengakses data database eksternal menggunakan akun Hologres kustom (akun BASIC).

Prosedur

  1. Login ke Konsol Resource Access Management (RAM). Buat Peran RAM dan berikan izin AliyunDLFFullAccess atau AliyunDLFReadOnlyAccess untuk mengakses DLF. Untuk informasi selengkapnya, lihat Create a RAM role and grant permissions.

  2. Ubah kebijakan kepercayaan untuk mengizinkan Hologres, layanan Alibaba Cloud tepercaya, mengasumsikan Peran RAM. Untuk informasi selengkapnya, lihat Modify the trust policy of a 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 Peran RAM untuk mengakses database dan tabel. Untuk informasi selengkapnya, lihat Permission management.

  4. Di Hologres, buat database eksternal dan tentukan Peran RAM di atas untuk 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 'Catalog on dlf'
      ;
  5. Di Hologres, buat pemetaan pengguna untuk mengaitkan Pengguna RAM atau akun BASIC yang perlu mengakses Katalog DLF dengan Peran RAM.

    CREATE USER MAPPING FOR "<RAM_user|BASIC_account>"
    EXTERNAL DATABASE <ext_database_name>
    OPTIONS
    (
       rolearn 'acs:ram::10638060***:role/***ramrole'
    );
    Catatan
  6. Setelah Anda login ke Konsol Manajemen Hologres sebagai Pengguna RAM atau menyambungkan ke instans Hologres menggunakan akun BASIC, jalankan kueri SQL berikut.

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

Akselerasi kueri pada tabel data lake menggunakan pencerminkan

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

Operasi skema eksternal

Buat skema eksternal di katalog

Saat Anda membuat skema eksternal, sebuah database dibuat di Katalog DLF. Contoh kode berikut:

-- Create an external schema.
CREATE EXTERNAL SCHEMA [IF NOT EXISTS] <ext_database_name>.<ext_schema_name>;

Segarkan metadata skema eksternal

REFRESH CACHE FOR EXTERNAL SCHEMA <ext_database_name>.<ext_schema_name> WITH( cache_level = 'metadata'); 

Hapus skema eksternal

Saat Anda menghapus skema eksternal, database yang sesuai dan semua tabel di dalamnya dihapus dari katalog. Lakukan operasi ini dengan hati-hati.

-- Delete an external schema.
DROP EXTERNAL SCHEMA [IF NOT EXISTS] <ext_database_name>.<ext_schema_name>;

Lihat tabel di skema tertentu

SELECT * FROM hologres.hg_external_tables ('<ext_database_name>', '<ext_schema_name>');

Operasi tabel eksternal

Buat tabel eksternal di katalog

-- Create a non-partitioned table.

CREATE EXTERNAL TABLE <ext_database_name>.<ext_schema_name>.<ext_table_name>(
    id TEXT,                                        
    created_at BIGINT,                             
    type TEXT,                                      
    actor_id TEXT,                                  
    actor_login TEXT,                               
    repo_id TEXT,                                   
    repo_name TEXT,                                 
    org TEXT,                                       
    org_login TEXT,                                 
    PRIMARY KEY(id)
) WITH (
  "changelog-producer"='input',
  "bucket"=6,
  "bucket-key"='id'
);

-- Create a partitioned table.

CREATE EXTERNAL TABLE <ext_database_name>.<ext_schema_name>.<ext_table_name>(
    id TEXT,                                        
    created_at BIGINT,                              
    type TEXT,                                      
    actor_id TEXT,                                  
    actor_login TEXT,                               
    repo_id TEXT,                                  
    repo_name TEXT,                                 
    org TEXT,                                       
    org_login TEXT                                
)
LOGICAL PARTITION BY LIST(created_at)
 WITH (
  "file_format" = 'orc',
  "bucket"=6,
  "bucket-key"='id'
);

Segarkan metadata tabel eksternal

REFRESH CACHE FOR EXTERNAL TABLE <ext_db_name>.<ext_schema_name>.<ext_table_name> WITH( cache_level = 'metadata');

Hapus tabel eksternal

Saat Anda menghapus tabel eksternal, tabel tersebut dihapus dari Katalog DLF. Lakukan operasi ini dengan hati-hati.

-- Delete an external table.
DROP EXTERNAL TABLE IF EXISTS <ext_database_name>.<ext_schema_name>.<ext_table_name>;

Kumpulkan informasi statistik tabel eksternal

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

-- Update the statistics information for a table. By default, statistics information is collected for all columns in the table.
analyze <ext_database_name>.<ext_schema_name>.<ext_table_name>;

-- Update the statistics information for a specific column. More data is sampled than when updating the entire table, which results in more accurate statistics. This is mainly used to update columns with conditional filters.
analyze <ext_database_name>.<ext_schema_name>.<ext_table_name>(<colname>, <colname>);

-- Enable 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 pengkuerian snapshot historis tabel Paimon berdasarkan stempel waktu, versi, atau tag. Hal ini mengaktifkan fitur time travel untuk data. Anda juga dapat mengkueri tabel sistem Paimon, seperti Snapshots dan Tags, di Hologres untuk mengambil detail snapshot tabel target. Untuk informasi selengkapnya tentang tabel sistem, lihat Paimon System Tables.

Kueri tabel sistem Paimon Snapshots

SELECT * FROM hologres.hg_list_snapshots('<ext_database_name>.<ext_schema_name>.<ext_table_name>;');

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

Bidang tabel sistem Snapshots

Tipe

Deskripsi

Bidang yang sesuai di tabel sistem Paimon

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 lain dari tabel sistem Paimon Snapshots.

Properti lain dari tabel sistem Paimon Snapshots

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

SELECT * FROM hologres.hg_list_versions('<ext_database_name>.<ext_schema_name>.<ext_table_name>');

Kueri tabel sistem Paimon Tag

SELECT * FROM hologres.hg_list_tags('<ext_database_name>.<ext_schema_name>.<ext_table_name>');

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

Bidang tag tabel sistem

Tipe

Deskripsi

Bidang yang sesuai di tabel sistem Paimon

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 lain dari tabel sistem Paimon Tag.

Properti lain dari tabel sistem Paimon Tag

Kueri snapshot historis tabel Paimon berdasarkan stempel waktu

SELECT * FROM '<ext_database_name>.<ext_schema_name>.<ext_table_name>' FOR TIMESTAMP AS OF '<timestamp>';

Kueri snapshot historis tabel Paimon berdasarkan versi

Untuk tabel Paimon, versi bersesuaian dengan ID snapshot.

SELECT * FROM '<ext_database_name>.<ext_schema_name>.<ext_table_name>' FOR VERSION AS OF '<version>';

Kueri snapshot historis tabel Paimon berdasarkan tag

SELECT * FROM '<ext_database_name>.<ext_schema_name>.<ext_table_name>' FOR TAG AS OF '<tag>';

Kueri cabang

Hologres V3.2 dan versi yang lebih baru mendukung pengkuerian data dari cabang tertentu di tabel Paimon. Properti fallback cabang juga didukung. Untuk informasi selengkapnya tentang cabang Paimon, lihat Manage Branch.

Kueri tabel sistem Branch

SELECT * FROM hologres.hg_list_branches('<ext_database_name>.<ext_schema_name>.<ext_table_name>');

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

Bidang

Tipe

Deskripsi

Bidang yang sesuai di tabel sistem Paimon

branch_name

TEXT

Nama cabang.

branch_name

create_time

TIMESTAMPTZ

Waktu pembuatan cabang.

create_time

extend_info

TEXT (JSON)

Properti lain dari tabel sistem Paimon Branch.

Properti lain dari tabel sistem Paimon Branch

Kueri data cabang 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 cabang saat ini, pembaca akan mencoba membaca data partisi tersebut dari cabang fallback. Untuk informasi selengkapnya tentang cabang fallback, lihat Manage Branch.

Kueri data snapshot historis cabang tertentu

-- Query based on a timestamp.
SELECT * FROM '<ext_database_name>.<ext_schema_name>.<ext_table_name>' FOR branch AS OF '<branch_name>' TIMESTAMP AS OF '<timestamp>';

-- Query based on a tag.
SELECT * FROM '<ext_database_name>.<ext_schema_name>.<ext_table_name>' FOR branch AS OF '<branch_name>' TAG AS OF '<tag_name>';

Mengonsumsi tabel Paimon menggunakan tabel eksternal

  1. Buat server asing.

    Untuk informasi selengkapnya tentang operasi pada server asing, lihat More operations on foreign servers (SQL).

    -- 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>'
    );
  2. Buat tabel asing.

    • Gunakan IMPORT FOREIGN SCHEMA

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

      -- Create a foreign table using IMPORT FOREIGN SCHEMA.
      IMPORT FOREIGN SCHEMA <dlf_db_name>
      FROM SERVER <server_name> 
      INTO <holo_schema_name> 
      options (if_table_exist 'update');
    • Gunakan 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>'
      );

Mengonsumsi tabel Paimon menggunakan tabel dinamis

Tabel dinamis secara otomatis memproses dan menyimpan data agregat dari satu atau beberapa tabel dasar. Tabel ini mencakup kebijakan penyegaran data bawaan yang dapat Anda konfigurasi sesuai kebutuhan bisnis. Konfigurasi ini memungkinkan aliran data otomatis dari tabel dasar ke tabel dinamis, yang memenuhi persyaratan pengembangan terpadu, aliran data otomatis, dan pemrosesan tepat waktu. Hologres V3.0 dan versi yang lebih baru mendukung penggunaan tabel asing MaxCompute dan tabel asing DLF sebagai tabel dasar untuk tabel dinamis. Untuk informasi selengkapnya, lihat Dynamic Table.

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

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