CREATE EXTERNAL SCHEMA
功能概述
CREATE EXTERNAL SCHEMA
CREATE EXTERNAL SCHEMA
语句将外部数据源(Hive Metastore 或 Databricks Unity Catalog)映射为 Lakehouse 中的 schema,使用户无需迁移数据即可直接在 Lakehouse 中查询外部数据。
使用限制
目前支持以下外部数据源:
- Hive on OSS(阿里云对象存储,支持读写)
- Hive on COS(腾讯云对象存储,支持读写)
- Hive on S3(AWS 对象存储,支持读写)
- Hive on HDFS(Preview,仅支持读取,需联系 Lakehouse 支持)
- Databricks Unity Catalog
写入格式支持 Parquet、ORC、Text。
语法
CREATE EXTERNAL SCHEMA [ IF NOT EXISTS ] schema_name
CONNECTION connection_name
[ OPTIONS ( option_key = 'option_value' [, ...] ) ];
参数说明
| 参数 | 是否必填 | 说明 |
|---|
schema_name
schema_name | 是 | 外部 schema 的名称,在当前 workspace 下必须唯一 |
IF NOT EXISTS
IF NOT EXISTS | 否 | 若 schema 已存在则跳过,不报错 |
CONNECTION connection_name
CONNECTION connection_name | 是 | 预先创建的 Catalog Connection 名称,参考 创建 Catalog Connection |
OPTIONS
OPTIONS | 否 | 附加配置项,用于指定外部数据源中的数据库或 catalog 名称 |
OPTIONS 常用配置项
| 配置项 | 适用场景 | 说明 |
|---|
SCHEMA
SCHEMA | Hive | 映射的 Hive 数据库名称。未指定时默认使用 schema_name
schema_name |
catalog
catalog | Databricks | Databricks Unity Catalog 的 catalog 名称 |
schema
schema | Databricks | Databricks Unity Catalog 的 schema 名称 |
创建流程
Hive 外部 Schema(HMS)
创建 Hive 外部 Schema 需要三步:创建存储连接 → 创建 Catalog Connection → 创建 External Schema。
第一步:创建存储连接
CREATE STORAGE CONNECTION IF NOT EXISTS catalog_storage_oss
TYPE OSS
ACCESS_ID = 'LTAIxxxxxxxxxxxx'
ACCESS_KEY = 'T8Gexxxxxxmtxxxxxx'
ENDPOINT = 'oss-cn-hangzhou-internal.aliyuncs.com';
第二步:创建 Catalog Connection
请确保 HMS 所在服务器网络与 Lakehouse 网络已打通,参考 创建阿里云终端节点服务。
CREATE CATALOG CONNECTION IF NOT EXISTS catalog_api_connection
TYPE hms
hive_metastore_uris = 'xxxx:9083'
storage_connection = 'catalog_storage_oss';
第三步:创建 External Schema
CREATE EXTERNAL SCHEMA IF NOT EXISTS my_external_schema
CONNECTION catalog_api_connection
OPTIONS (SCHEMA = 'default');
验证连通性
-- 验证读取元数据
SHOW TABLES IN my_external_schema;
-- 验证读取数据
SELECT * FROM my_external_schema.my_table LIMIT 10;
Databricks Unity Catalog 外部 Schema
第一步:创建 Catalog Connection
参考 创建 Databricks Catalog。
CREATE CATALOG CONNECTION IF NOT EXISTS conn_databricks
TYPE databricks
HOST = 'https://dbc-12345678-9abc.cloud.databricks.com'
CLIENT_ID = 'client_id_value'
CLIENT_SECRET = 'client_secret_value'
ACCESS_REGION = 'us-west-2';
第二步:创建 External Schema
CREATE EXTERNAL SCHEMA IF NOT EXISTS external_db_sch
CONNECTION conn_databricks
OPTIONS ('catalog' = 'quick_start', 'schema' = 'default');
验证连通性
SHOW TABLES IN external_db_sch;
各云平台存储连接参数说明
Hive on COS(腾讯云)
CREATE STORAGE CONNECTION catalog_storage_cos
TYPE COS
ACCESS_KEY = '<access_key>'
SECRET_KEY = '<secret_key>'
REGION = 'ap-shanghai'
APP_ID = '1310000503';
Hive on S3(AWS)
CREATE STORAGE CONNECTION catalog_storage_s3
TYPE S3
ACCESS_KEY = 'AKIAQNBSBP6EIJE33***'
SECRET_KEY = '7kfheDrmq***'
ENDPOINT = 's3.cn-north-1.amazonaws.com.cn'
REGION = 'cn-north-1';
ENDPOINT
ENDPOINT
:北京区 s3.cn-north-1.amazonaws.com.cn
s3.cn-north-1.amazonaws.com.cn
,宁夏区 s3.cn-northwest-1.amazonaws.com.cn
s3.cn-northwest-1.amazonaws.com.cn
。
REGION
REGION
:北京区 cn-north-1
cn-north-1
,宁夏区 cn-northwest-1
cn-northwest-1
。
Hive on HDFS(Preview)
CREATE STORAGE CONNECTION hdfs_conn
TYPE HDFS
NAME_NODE = 'zetta-cluster'
NAME_NODE_RPC_ADDRESSES = ['11.110.239.148:8020'];
NAME_NODE
NAME_NODE
:对应 HDFS 配置中的 dfs.nameservices
dfs.nameservices
,即集群逻辑名称。
NAME_NODE_RPC_ADDRESSES
NAME_NODE_RPC_ADDRESSES
:对应 dfs.namenode.rpc-address
dfs.namenode.rpc-address
,格式为 [<host>:<port>]
[<host>:<port>]
。
注意事项
- 创建 External Schema 前,必须先创建对应的 Catalog Connection。
OPTIONS
OPTIONS
中的 SCHEMA
SCHEMA
参数未指定时,Lakehouse 默认使用 schema_name
schema_name
与 Hive 数据库进行映射。
- Hive on HDFS 目前处于 Preview 阶段,仅支持读取,如需使用请联系 Lakehouse 支持。
- External Schema 中的数据存储在外部系统,删除 External Schema 不会删除底层数据。
相关文档