Delta Lake Catalog
Delta Lake Catalog是一種External Catalog,StarRocks從2.5版本開始支持。
背景信息
通過Delta Lake Catalog,您可以:
不需要執(zhí)行數(shù)據(jù)導(dǎo)入就可以直接查詢Delta Lake里的數(shù)據(jù)。
通過INSERT INTO將Delta Lake內(nèi)的數(shù)據(jù)進(jìn)行加工建模,并導(dǎo)入至StarRocks。
為保證正常訪問Delta Lake內(nèi)的數(shù)據(jù),StarRocks集群必須能夠訪問Delta Lake集群的存儲(chǔ)系統(tǒng)和元數(shù)據(jù)服務(wù)。目前StarRocks支持以下存儲(chǔ)系統(tǒng)和元數(shù)據(jù)服務(wù):
分布式文件系統(tǒng)(HDFS)或阿里云對(duì)象存儲(chǔ)OSS。
元數(shù)據(jù)服務(wù)。當(dāng)前支持的元數(shù)據(jù)服務(wù)包括Hive Metastore(以下簡稱HMS)、數(shù)據(jù)湖構(gòu)建(DLF)。
使用說明
StarRocks查詢Delta Lake數(shù)據(jù)時(shí),支持Parquet文件格式。Parquet文件支持SNAPPY、LZ4、ZSTD、GZIP和NO_COMPRESSION壓縮格式。
StarRocks查詢Delta Lake數(shù)據(jù)時(shí),不支持MAP和STRUCT數(shù)據(jù)類型。
創(chuàng)建Delta Lake Catalog
語法
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "deltalake",
MetastoreParams
)
參數(shù)說明
catalog_name
:Delta Lake Catalog的名稱,必選參數(shù)。命名要求如下:必須由字母(a~z或A~Z)、數(shù)字(0~9)或下劃線(_)組成,并且只能以字母開頭。
總長度不能超過64個(gè)字符。
Catalog名稱大小寫敏感。
comment
:Delta Lake Catalog的描述,此參數(shù)為可選。type
:數(shù)據(jù)源的類型,設(shè)置為Delta Lake
。MetastoreParams
:StarRocks訪問Delta Lake集群元數(shù)據(jù)服務(wù)的相關(guān)參數(shù)配置。Delta Lake使用的元數(shù)據(jù)服務(wù)不同,參數(shù)的配置也不同。使用HMS
屬性
說明
hive.metastore.type
Delta Lake集群所使用的元數(shù)據(jù)服務(wù)的類型,設(shè)置為
hive
。hive.metastore.uris
Hive MetaStore的URI。格式為
thrift://<Hive MetaStore的IP地址>:<端口號(hào)>
,端口號(hào)默認(rèn)為9083。使用DLF
屬性
說明
hive.metastore.type
Delta Lake集群所使用的元數(shù)據(jù)服務(wù)的類型,設(shè)置為
dlf
。dlf.catalog.id
DLF中已有的數(shù)據(jù)目錄ID。如果未配置
dlf.catalog.id
參數(shù)的值,則系統(tǒng)將使用默認(rèn)的DLF Catalog。
示例
以下示例創(chuàng)建了一個(gè)名為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
查詢當(dāng)前所在StarRocks里所有Catalog。
SHOW CATALOGS;
您也可以通過SHOW CREATE CATALOG
查詢某個(gè)External Catalog的創(chuàng)建語句。例如,通過如下命令查詢Delta Lake Catalogdeltalake_catalog_hms
的創(chuàng)建語句。
SHOW CREATE CATALOG deltalake_catalog_hms;
切換Delta Lake Catalog和數(shù)據(jù)庫
您可以通過如下方法切換至目標(biāo)Delta Lake Catalog和數(shù)據(jù)庫:
先通過
SET CATALOG
指定當(dāng)前會(huì)話生效的Delta Lake Catalog,然后再通過USE指定數(shù)據(jù)庫。-- 切換當(dāng)前會(huì)話生效的Catalog。 SET CATALOG <catalog_name>; -- 指定當(dāng)前會(huì)話生效的數(shù)據(jù)庫。 USE <db_name>;
通過USE直接將會(huì)話切換到目標(biāo)Delta Lake Catalog下的指定數(shù)據(jù)庫。
USE <catalog_name>.<db_name>;
刪除Delta Lake Catalog
您可以通過DROP CATALOG刪除某個(gè)External Catalog。
例如,通過以下命令刪除deltalake_catalog_hms
。
DROP Catalog deltalake_catalog_hms;
查看Delta Lake表結(jié)構(gòu)
您可以通過如下方法查看Delta Lake表的表結(jié)構(gòu)。
查看表結(jié)構(gòu)
DESC[RIBE] <catalog_name>.<database_name>.<table_name>;
從CREATE命令查看表結(jié)構(gòu)和表文件存放位置
SHOW CREATE TABLE <catalog_name>.<database_name>.<table_name>;
查詢Delta Lake表數(shù)據(jù)
通過SHOW DATABASES查看指定Catalog所屬的Delta Lake集群中的數(shù)據(jù)庫。
SHOW DATABASES FROM <catalog_name>;
切換至目標(biāo)Delta Lake Catalog和數(shù)據(jù)庫。
通過SELECT查詢目標(biāo)數(shù)據(jù)庫中的目標(biāo)表。
SELECT count(*) FROM <table_name> LIMIT 10;
導(dǎo)入Delta Lake數(shù)據(jù)
假設(shè)StarRocks的內(nèi)部數(shù)據(jù)有一張OLAP表,表名為olap_tbl
。您可以這樣來轉(zhuǎn)換該表中的數(shù)據(jù),并把數(shù)據(jù)導(dǎo)入到StarRocks中。
INSERT INTO default_catalog.olap_db.olap_tbl SELECT * FROM deltalake_table;
相關(guān)文檔
Delta Lake更多介紹,請(qǐng)參見Delta Lake概述。