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
Layanan DLF telah diaktifkan dan katalog telah dibuat. Untuk informasi selengkapnya, lihat Grant permissions and activate DLF dan Data Catalog.
Anda telah membeli instans Hologres dan mengaktifkan layanan akselerasi data lake. Instans tersebut harus berada di Wilayah yang sama dengan layanan DLF. Untuk informasi selengkapnya, lihat Environment Configuration.
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
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' ;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>');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
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.
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" }Login ke Konsol Data Lake Formation. Di katalog tujuan, berikan izin Peran RAM untuk mengakses database dan tabel. Untuk informasi selengkapnya, lihat Permission management.
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' ;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' );CatatanUntuk informasi selengkapnya tentang pemetaan pengguna, lihat CREATE USER MAPPING.
Untuk informasi selengkapnya tentang cara membuat Pengguna RAM, lihat Create a RAM user.
Untuk informasi selengkapnya tentang cara membuat akun BASIC, lihat User management.
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>';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
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>' );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>;