Hologres自V3.0版本開始,支援在DLF 2.0資料來源的EXTERNAL SCHEMA下建立EXTERNAL TABLE。目前,僅支援建立Paimon格式的EXTERNAL TABLE。本文為您介紹CREATE EXTERNAL TABLE的用法和使用限制。
文法說明
文法
CREATE EXTERNAL TABLE的建表文法如下。
CREATE EXTERNAL TABLE [IF NOT EXISTS] <ext_db_name>.<ext_schema_name>.<ext_table_name>
(
[{
<col_name> <col_type> [<col_constraints> [, ...]] |
<table_constraints> [, ...]
}]
)
[LOGICAL PARTITION BY LIST(<col_name> [, ...])]
[
WITH
(
"<property>" = '<value>' [, ...]
)
];
WITH屬性說明
屬性名稱 | 說明 | 樣本 |
table_format | 建立EXTERNAL TABLE的表格式,當前僅支援Paimon格式。 |
|
file_format | 建立EXTERNAL TABLE的檔案格式,當前僅支援ORC、Parquet格式。 |
|
bucket | Bucket是Paimon表讀寫操作的最小單元。 定義該屬性後,非分區表的所有資料以及分區表每個分區的資料,都會被劃分到不同的分桶中,以便同一作業使用多個並發同時讀寫Paimon表,加快讀寫效率。詳情,請參見Data Distribution。 |
|
bucket-key | 用於指定資料的分桶方式。 |
|
changelog-producer | Paimon表需要將資料的增刪與更新改寫為完整的變更資料(類似於資料庫的Binlog),才能讓下遊進行流式消費。通過設定該參數,Paimon將以不同的方式產生變更資料。詳情,請參見Changelog Producer。 |
|
相關操作
查看建表語句
SELECT * FROM hologres.hg_dump_script_external('<ext_db_name>.<ext_schema_name>.<ext_table_name>');
查看錶的列屬性和分區屬性
SELECT * FROM hologres.hg_external_columns('<ext_db_name>', '<ext_schema_name>', '<ext_table_name>');
查看External Schema下所有表
SELECT * FROM hologres.hg_external_tables ('<ext_db_name>', '<ext_schema_name>');
重新整理外表中繼資料
REFRESH CACHE FOR External TABLE <ext_db_name>.<ext_schema_name>.<ext_table_name> WITH( cache_level = 'metadata');
使用樣本
在DLF 2.0中建立分區表
以Paimon Append Table為例。
CREATE EXTERNAL TABLE ext_db_dlf.ext_schema_dlf.ext_par_table_dlf(
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'
);
在DLF 2.0中建立非分區表
以Paimon主鍵表為例。
CREATE EXTERNAL TABLE openlake_win.github_events.gh_event_ods(
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'
);