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表数据
通过SHOW DATABASES查看指定Catalog所属的Delta Lake集群中的数据库。
SHOW DATABASES FROM <catalog_name>;
切换至目标Delta Lake Catalog和数据库。
通过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概述。