全部產品
Search
文件中心

E-MapReduce:Delta Lake Catalog

更新時間:Oct 09, 2024

Delta Lake Catalog是一種External Catalog,StarRocks從2.5版本開始支援。

背景資訊

通過Delta Lake Catalog,您可以:

  • 不需要執行資料匯入就可以直接查詢Delta Lake裡的資料。

  • 通過INSERT INTO將Delta Lake內的資料進行加工建模,並匯入至StarRocks。

為保證正常訪問Delta Lake內的資料,StarRocks叢集必須能夠訪問Delta Lake叢集的儲存系統和中繼資料服務。目前StarRocks支援以下儲存系統和中繼資料服務:

  • Distributed File System(HDFS)或阿里雲Object Storage Service。

  • 中繼資料服務。當前支援的中繼資料服務包括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概述