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'
);
文檔內容是否對您有幫助?