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