Hologres从V3.0版本开始,支持在数据源为DLF2.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 | 创建外表的表格式,当前仅支持Paimon表。 |
|
file_format | 创建外表的文件格式,当前仅支持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_dlf.ext_schema_dlf.ext_table_dlf WITH( cache_level = 'metadata');
使用示例
在DLF中创建分区表
以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中创建非分区表
以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'
);
文档内容是否对您有帮助?