Delta Lake Catalog

Delta Lake Catalog是一种External Catalog,StarRocks从2.5版本开始支持。

背景信息

通过Delta Lake Catalog,您可以:

  • 不需要执行数据导入就可以直接查询Delta Lake里的数据。

  • 通过INSERT INTO将Delta Lake内的数据进行加工建模,并导入至StarRocks。

为保证正常访问Delta Lake内的数据,StarRocks集群必须能够访问Delta Lake集群的存储系统和元数据服务。目前StarRocks支持以下存储系统和元数据服务:

  • 分布式文件系统(HDFS)或阿里云对象存储OSS。

  • 元数据服务。当前支持的元数据服务包括Hive Metastore(以下简称HMS)、数据湖构建(DLF)。

使用说明

  • StarRocks查询Delta Lake数据时,支持Parquet文件格式。Parquet文件支持SNAPPY、LZ4、ZSTD、GZIP和NO_COMPRESSION压缩格式。

  • StarRocks查询Delta Lake数据时,不支持MAP和STRUCT数据类型。

创建Delta Lake Catalog

语法

CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
    "type" = "deltalake",
    MetastoreParams
)

参数说明

  • catalog_name:Delta Lake Catalog的名称,必选参数。命名要求如下:

    • 必须由字母(a~z或A~Z)、数字(0~9)或下划线(_)组成,并且只能以字母开头。

    • 总长度不能超过64个字符。

    • Catalog名称大小写敏感。

  • comment:Delta Lake Catalog的描述,此参数为可选。

  • type:数据源的类型,设置为Delta Lake

  • MetastoreParams:StarRocks访问Delta Lake集群元数据服务的相关参数配置。Delta Lake使用的元数据服务不同,参数的配置也不同。

    • 使用HMS

      属性

      说明

      hive.metastore.type

      Delta Lake集群所使用的元数据服务的类型,设置为hive

      hive.metastore.uris

      Hive MetaStore的URI。格式为thrift://<Hive MetaStore的IP地址>:<端口号>,端口号默认为9083。

    • 使用DLF

      属性

      说明

      hive.metastore.type

      Delta Lake集群所使用的元数据服务的类型,设置为dlf

      dlf.catalog.id

      DLF中已有的数据目录ID。如果未配置dlf.catalog.id参数的值,则系统将使用默认的DLF Catalog。

示例

以下示例创建了一个名为Delta Lake_catalog_hms的Delta Lake Catalog。

CREATE EXTERNAL CATALOG deltalake_catalog_hms
PROPERTIES
(
    "type" = "deltalake",
    "hive.metastore.type" = "hive",
    "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083"
);

查看Delta Lake Catalog

您可以通过SHOW CATALOGS查询当前所在StarRocks里所有Catalog。

SHOW CATALOGS;

您也可以通过SHOW CREATE CATALOG查询某个External Catalog的创建语句。例如,通过如下命令查询Delta Lake Catalogdeltalake_catalog_hms的创建语句。

SHOW CREATE CATALOG deltalake_catalog_hms;

切换Delta Lake Catalog和数据库

您可以通过如下方法切换至目标Delta Lake Catalog和数据库:

  • 先通过SET CATALOG指定当前会话生效的Delta Lake Catalog,然后再通过USE指定数据库。

    -- 切换当前会话生效的Catalog。
    SET CATALOG <catalog_name>;
    
    -- 指定当前会话生效的数据库。
    USE <db_name>;
  • 通过USE直接将会话切换到目标Delta Lake Catalog下的指定数据库。

    USE <catalog_name>.<db_name>;

删除Delta Lake Catalog

您可以通过DROP CATALOG删除某个External Catalog。

例如,通过以下命令删除deltalake_catalog_hms

DROP Catalog deltalake_catalog_hms;

查看Delta Lake表结构

您可以通过如下方法查看Delta Lake表的表结构。

  • 查看表结构

    DESC[RIBE] <catalog_name>.<database_name>.<table_name>;
  • 从CREATE命令查看表结构和表文件存放位置

    SHOW CREATE TABLE <catalog_name>.<database_name>.<table_name>;

查询Delta Lake表数据

  1. 通过SHOW DATABASES查看指定Catalog所属的Delta Lake集群中的数据库。

    SHOW DATABASES FROM <catalog_name>;
  2. 切换至目标Delta Lake Catalog和数据库。

  3. 通过SELECT查询目标数据库中的目标表。

    SELECT count(*) FROM <table_name> LIMIT 10;

导入Delta Lake数据

假设StarRocks的内部数据有一张OLAP表,表名为olap_tbl。您可以这样来转换该表中的数据,并把数据导入到StarRocks中。

INSERT INTO default_catalog.olap_db.olap_tbl SELECT * FROM deltalake_table;

相关文档

Delta Lake更多介绍,请参见Delta Lake概述