Lakehouse 引入了一项强大的功能,即通过 EXTERNAL SCHEMA
将外部数据库映射到 Lakehouse,使得用户能够在不迁移数据的情况下,直接在 Lakehouse 存储中查询外部数据。这一功能极大地提升了跨数据源操作和查询的便利性,为用户提供了更加灵活的数据集成解决方案。
使用限制
- 目前,云器 Lakehouse 的外部模式映射功能支持以下外部数据源:
- Hive on OSS(阿里云对象存储服务,支持读取和写入)
- Hive on COS(腾讯云对象存储服务,支持读取和写入)
- Hive on S3(AWA对象存储服务,支持读取和写入)
- Hive on HDFS (Preview 请联系Lakehouse支持,只支持读取)
- Databricks Unity Catalog
- 同时支持写入和读取。写格式支持parquet、orc、text文件格式
创建Hive External Schema
语法
创建存储连接
首先,您需要创建一个存储连接,以连接到外部对象存储服务。
CREATE STORAGE CONNECTION if not exists catalog_storage_oss
type OSS
ACCESS_ID='LTAIxxxxxxxxxxxx'
ACCESS_KEY='T8Gexxxxxxmtxxxxxx'
ENDPOINT='xxx';
创建Hive Catalog连接
接着,创建一个Catalog连接,指向 Hive 元数据存储服务(Hive Metastore)。
CREATE CATALOG CONNECTION if not exists connection_name
type hms
hive_metastore_uris='metastore_uris'
storage_connection='storage_connection';
创建External Schema
最后,创建一个External Schema,将外部数据源映射到 Lakehouse。
CREATE EXTERNAL SCHEMA if not exists schema_name
CONNECTION connection_name
options(SCHEMA='hive_database_name');
connection
:必选参数,指定Catalog Connection的名称。
SCHEMA
:可选参数,用于映射 Hive 的数据库名称。如果未指定,Lakehouse 将默认使用创建的 schema_name
名称与 Hive 中的数据库自动映射。
案例
案例一:Hive ON OSS
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';
CREATE EXTERNAL SCHEMA if not exists my_external_schema
CONNECTION catalog_api_connection
options(SCHEMA='default');
--验证读取元数据
SHOW TABLES IN my_external_schema;
--验证读取数据,读取数据时会使用STORAGE CONNECTION权限读取
SELECT * FROM my_external_schema.my_table;
案例二: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';
参数:
-
TYPE:为对象存储类型,腾讯云应填写 COS
(大小写不限)
-
ACCESS_KEY / SECRET_KEY:为腾讯云的访问密钥,获取方式参考:访问密钥
-
REGION:指腾讯云对象存储 COS 的数据中心所在的地域。相同地域内云器Lakehouse访问腾讯云COS时,COS服务将自动路由至内网访问。具体取值请参考腾讯云文档:地域和访问域名。
-
创建 Catalog Connection
请确保和HMS所在服务器网络和Lakehouse打通。具体打通方式可以参考创建腾讯云终端节点服务
CREATE CATALOG CONNECTION if not exists catalog_api_connection
type hms
hive_metastore_uris='xxxx:9083'
storage_connection='catalog_storage_cos';
CREATE CATALOG CONNECTION if not exists catalog_api_connection
type hms
hive_metastore_uris='xxxx:9083'
storage_connection='catalog_storage_oss';
CREATE EXTERNAL SCHEMA if not exists my_external_schema
CONNECTION catalog_api_connection
options(SCHEMA='default');
--验证读取元数据
SHOW TABLES IN my_external_schema;
--验证读取数据,读取数据时会使用STORAGE CONNECTION权限读取
SELECT * FROM my_external_schema.my_table;
案例三:Hive ON S3
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';
参数:
- TYPE:为对象存储类型,AWS 应填写 S3(大小写不限)
- ACCESS_KEY / SECRET_KEY:为AWS 的访问密钥,获取方式参考:访问密钥
- ENDPOINT: S3 的服务地址,AWS 中国区分为北京区和宁夏区,北京区的S3 的服务地址为
s3.cn-north-1.amazonaws.com.cn
, 宁夏区 s3.cn-northwest-1.amazonaws.com.cn
,可参考:中国区终端节点 分别找到北京区域和宁夏区域的终端节点 -> Amazon S3 对应的终端节点
- REGION:AWS 中国区分为北京区和宁夏区,区域值为:北京区
cn-north-1
, 宁夏区 cn-northwest-1
,可参考:中国区终端节点
- 创建 Catalog Connection
CREATE CATALOG CONNECTION if not exists catalog_api_connection
type hms
hive_metastore_uris='xxxx:9083'
storage_connection='catalog_storage_s3';
CREATE EXTERNAL SCHEMA if not exists my_external_schema
CONNECTION catalog_api_connection
options(SCHEMA='default');
--验证读取元数据
SHOW TABLES IN my_external_schema;
--验证读取数据,读取数据时会使用STORAGE CONNECTION权限读取
SELECT * FROM my_external_schema.my_table;
案例四:Hive ON HDFS(支持读取)
CREATE CATALOG CONNECTION if not exists catalog_api_connection
type hms
hive_metastore_uris='xxxx:9083'
storage_connection='hdfs_conn';
CREATE EXTERNAL SCHEMA if not exists my_external_schema
CONNECTION catalog_api_connection
options(SCHEMA='default');
--验证读取元数据
SHOW TABLES IN my_external_schema;
--验证读取数据,读取数据时会使用STORAGE CONNECTION权限读取
SELECT * FROM my_external_schema.my_table;
创建Databricks External Schema
语法
创建Databricks Catalog连接
创建一个Catalog连接,指向 Databricks 元数据存储服务。具体使用参考创建Databricks Catalog
CREATE CATALOG CONNECTION IF NOT EXISTS connection_name
TYPE databricks
HOST = 'host_value'
CLIENT_ID = 'client_id_value'
CLIENT_SECRET = 'client_secret_value'
ACCESS_REGION = 'access_region_value';
参数说明
connection_name
:连接的名称,用于标识该 Databricks Unity Catalog 连接。名称需唯一且符合命名规范。
TYPE databricks
: 指定连接类型为 Databricks Unity Catalog。
HOST
: Databricks 工作区的 URL 地址。通常格式为 https://<workspace-url>
。 示例:https://dbc-12345678-9abc.cloud.databricks.com
CLIENT_ID
用于 OAuth 2.0 机器对机器(M2M)认证的客户端 ID。参考 Databricks OAuth M2M 认证文档 创建 OAuth 2.0 应用,并获取 CLIENT_ID
CLIENT_SECRET
用于 OAuth 2.0 机器对机器(M2M)认证的客户端密钥。参考 Databricks OAuth M2M 认证文档 创建 OAuth 2.0 应用,并获取 CLIENT_SECRET
ACCESS_REGION
Databricks 工作区所在的区域(Region),例如 us-west-2
或 east-us
。
创建External Schema
CREATE EXTERNAL SCHEMA schema_name
CONNECTION connection_name
OPTIONS ('catalog'='catalog_value', 'schema'='schema_value');
参数说明
schema_name
: 外部模式的名称。该名称用于标识外部模式,需唯一且符合命名规范。
CONNECTION connection_name
: 指定与外部模式的连接。connection_name
是预先创建的连接名称,用于访问外部模式。
OPTIONS
:指定外部模式的配置选项。
'catalog'='catalog_value'
:指定外部模式的 Catalog 名称。
'schema'='schema_value'
:指定外部模式的 Schema 名称。
示例
CREATE EXTERNAL SCHEMA external_db_sch
CONNECTION conn_db
OPTIONS ('catalog'='quick_start', 'schema'='default');
示例解析:
external_db_sch
:创建的外部模式名称。
conn_db
:用于连接外部模式的连接名称。
OPTIONS
:
catalog='quick_start'
:指定外部模式的 Catalog 名称。
schema='default'
:指定外部模式的 Schema 名称。
- 验证是否连通Databricks Unity Catalog
--验证读取元数据
SHOW TABLES IN external_db_sch;