全部產品
Search
文件中心

Hologres:CREATE EXTERNAL TABLE

更新時間:Dec 18, 2024

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