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
DatabricksDatabricks Unity Catalog 的 catalog 名称
schema
schema
DatabricksDatabricks 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 不会删除底层数据。

相关文档

联系我们
预约咨询
微信咨询
电话咨询