CREATE EXTERNAL TABLE

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格式。

"table_format" = 'paimon'

file_format

创建EXTERNAL TABLE的文件格式,当前仅支持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_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'
);