EXTERNAL SCHEMA

简介

外部Schema(EXTERNAL SCHEMA)是Lakehouse提供的一项查询外部数据源的功能,借助EXTERNAL SCHEMA可以实现与外部元数据服务(如HMS)访问以及外表的批量映射,无需将数据导入Lakehouse。例如,通过与Hive的Database建立映射,并利用Hive元数据服务(HMS)接口,外部Schema能够直接获取Hive的元数据信息,但不会在Lakehouse中实际创建表结构。 使用EXTERNAL SCHEMA可以带来如下收益:

  1. 直接查询:通过EXTERNAL SCHEMA,用户可以直接对外部数据库(如Apache Hive)中的数据进行查询,而无需进行复杂的数据导入过程。
  2. 数据转换和导入:结合使用INSERT INTO ..SELECT语句,用户可以实现数据的提取、转换和加载(ETL),将查询结果直接写入到Lakehouse的表中。
  3. 实时联接:EXTERNAL SCHEMA支持将Lakehouse的表与外部数据源中的数据进行实时联接,这意味着用户可以在数据发生变化时直接查询,而不是等待数据重新加载。
  4. 删除行为说明: 删除外部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文档*:

首先,您需要创建一个存储连接,以连接到外部对象存储服务。

CREATE STORAGE CONNECTION if not exists catalog_storage_oss
    type OSS
    ACCESS_ID='LTAIxxxxxxxxxxxx'
    ACCESS_KEY='T8Gexxxxxxmtxxxxxx'
    ENDPOINT='xxx';

接着,创建一个目录连接,指向 Hive 元数据存储服务(Hive Metastore)。

CREATE CATALOG CONNECTION if not exists connection_name
    type hms
    hive_metastore_uris='metastore_uris'
    storage_connection='storage_connection';
CREATE EXTERNAL SCHEMA if not exists schema_name
    CONNECTION connection_name
    options(SCHEMA='hive_database_name');
  • connection:必选参数,指定目录连接的名称。
  • SCHEMA:可选参数,用于映射 Hive 的数据库名称。如果未指定,Lakehouse 将默认使用创建的 schema_name 名称与 Hive 中的数据库自动映射。

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