文档

CREATE EXTERNAL TABLE

更新时间:

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表。

"table_format" = 'paimon'

file_format

创建外表的文件格式,当前仅支持ORC、Parquet格式。

"file_format" = 'orc'

bucket

Bucket 是Paimon 表读写操作的最小单元。定义该属性后,非分区表的所有数据,以及分区表每个分区的数据,都会被进一步划分到不同的分桶中,以便同一作业使用多个并发同时读写 Paimon 表,加快读写效率。详见Data Distribution

"bucket" = '-1'

bucket-key

用于指定数据的分桶方式。

"bucket-key"='id'

changelog-producer

Paimon 表需要将数据的增删与更新改写为完整的变更数据(类似于数据库的 binlog),才能让下游进行流式消费。通过设置该参数,Paimon 将会以不同的方式产生变更数据。详见Changelog Producer

"changelog-producer"='input'

相关操作

查看建表语句

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