EXTERNAL SCHEMA
简介
外部Schema(EXTERNAL SCHEMA)是Lakehouse提供的一项查询外部数据源的功能,借助EXTERNAL SCHEMA可以实现与外部元数据服务(如HMS)访问以及外表的批量映射,无需将数据导入Lakehouse。例如,通过与Hive的Database建立映射,并利用Hive元数据服务(HMS)接口,外部Schema能够直接获取Hive的元数据信息,但不会在Lakehouse中实际创建表结构。 使用EXTERNAL SCHEMA可以带来如下收益:
- 直接查询:通过EXTERNAL SCHEMA,用户可以直接对外部数据库(如Apache Hive)中的数据进行查询,而无需进行复杂的数据导入过程。
- 数据转换和导入:结合使用
INSERT INTO ..SELECT
语句,用户可以实现数据的提取、转换和加载(ETL),将查询结果直接写入到Lakehouse的表中。 - 实时联接:EXTERNAL SCHEMA支持将Lakehouse的表与外部数据源中的数据进行实时联接,这意味着用户可以在数据发生变化时直接查询,而不是等待数据重新加载。
- 删除行为说明: 删除外部Schema不会删除Hive中的Database,因为外部Schema仅是与Hive中的Database建立了映射关系,删除操作只会移除Lakehouse中的外部Schema元数据信息。
这种设计提供了极大的灵活性和便利性,因为它减少了数据迁移的需要,并使得用户能够实时地查询和分析存储在外部数据源中的数据。
支持的范围
- Hive on OSS(阿里云对象存储服务)
- Hive on COS(腾讯云对象存储服务)
- Hive on GCS(Google云对象存储服务)
- Hive on HDFS (Preview 请联系Lakehouse支持)
- 同时支持写入和读取。写格式支持parquet、orc、text文件格式
外部Schema与外部表的区别
- External Schema: 直接与Hive元数据服务(HMS)交互,通过HMS接口直接获取Hive的元数据信息。
- 外部表: 用户可以自定义创建表,指定列内容和表名。
- External Schema 限制: 由于是直接映射HMS,无法在External Schema下直接创建、删除表或重命名表。
- 外部表优势: 支持重命名和修改注释等操作,因为它们是在内部Schema下创建的。
外部Schema计费
- 存储费用: 外部表不产生存储费用,因为数据不存储在Lakehouse中。
- 计算费用: 使用外部表进行计算会消耗计算资源,因此会产生计算费用。
外部Schema权限
- 创建外部Schema权限: 需要具有创建Schema(create schema)的权限。
- 删除外部Schema权限: 需要具有删除(drop)权限。
- **外部Schema下表的权限:**目前单独表无法单独授权,只支持(ALL TABLES权限)
管理
云器Lakehouse提供了创建和删除EXTERNAL SCHEMA的命令,以便用户可以根据需要管理这些外部数据源的访问权限和配置。
- 创建EXTERNAL SCHEMA:用户可以通过
CREATE EXTERNAL SCHEMA
命令来创建一个新的EXTERNAL SCHEMA,从而开始与外部数据库进行交互。具体的语法和参数设置可以在创建EXTERNAL SCHEMA文档中找到。 - 删除EXTERNAL SCHEMA:如果某个EXTERNAL SCHEMA不再需要,或者用户希望移除对外部数据库的访问权限,可以使用
DROP SCHEMA
命令来删除它。相关的操作步骤和注意事项在删除EXTERNAL SCHEMA文档中有详细说明。
权限说明
- 创建外部Schema权限: 需要具有创建Schema(create schema)的权限。
- 删除外部Schema权限: 需要具有删除(drop)权限。
- 外部Schema下表的权限: 目前单独表无法单独授权,只支持(ALL TABLES权限)
约束限制
支持的数据源:目前,EXTERNAL SCHEMA主要支持访问Hive Metastore元数据服务,且数据需要存储在HDFS或阿里云、腾讯云、谷歌云对象存储服务中。 操作限制: 在外部Schema下,不支持执行创建表、删除表等操作,因为它们是直接映射的。此外,外部Schema下的表仅支持只读操作,不允许进行插入、更新、截断或删除等数据操作语言(DML)操作。用户可以执行查询和连接操作,并能基于这些表创建视图。 删除行为说明: 删除外部Schema不会删除源系统中的映射对象(如Hive Database及其包含的表)。
使用样例
1. 连接阿里云OSS
要连接阿里云OSS,您需要以下参数,具体参考*阿里云OSS文档*:
首先,您需要创建一个存储连接,以连接到外部对象存储服务。
接着,创建一个目录连接,指向 Hive 元数据存储服务(Hive Metastore)。
connection
:必选参数,指定目录连接的名称。SCHEMA
:可选参数,用于映射 Hive 的数据库名称。如果未指定,Lakehouse 将默认使用创建的schema_name
名称与 Hive 中的数据库自动映射。
联系我们