StarRocks自2.3版本起支援Catalog(資料目錄)功能,實現在一套系統內同時維護內、外部資料,方便您輕鬆訪問並查詢儲存在各類外部源的資料。本文為您介紹什麼是Catalog, 以及如何使用Catalog管理和查詢內外部資料。
基本概念
內部資料:指儲存在StarRocks中的資料。
外部資料:指儲存在外部資料源中的資料,例如Apache Hive、Apache Iceberg、Apache Hudi、Delta Lake及JDBC等。
Catalog介紹
當前,StarRocks提供兩種類型的Catalog:Internal Catalog(內部資料目錄)和External Catalog(外部資料目錄)。
Internal Catalog:內部資料目錄,用於管理StarRocks所有內部資料。例如,執行CREATE DATABASE和CREATE TABLE語句建立的資料庫和資料表都由Internal Catalog管理。 每個StarRocks叢集都有且只有一個Internal Catalog名為default_catalog。
External Catalog:外部資料目錄,用於串連外部Metastore。在StarRocks中,您可以通過External Catalog直接查詢外部資料,無需進行資料匯入或遷移。當前支援建立以下類型的External Catalog:
Hive Catalog:用於查詢Hive中的資料。
Iceberg Catalog:用於查詢Iceberg中的資料。
Hudi Catalog:用於查詢Hudi中的資料。
Delta Lake Catalog:用於查詢Delta Lake中的資料。
JDBC Catalog:用於查詢JDBC資料來源中的資料。
Paimon Catalog:用於查詢Paimon中的資料。該特性自3.1版本起支援。
Unified Catalog:把Hive、Iceberg、Hudi和Delta Lake作為一個融合的資料來源,從中查詢資料。該特性自3.2版本起支援。
使用External Catalog查詢資料時,StarRocks會用到外部資料源的兩個組件:
中繼資料服務:用於將中繼資料暴露出來供StarRocks的FE進行查詢規劃。
儲存系統:用於儲存資料。資料檔案以不同的格式儲存在Distributed File System或Object Storage Service系統中。當FE將產生的查詢計劃分發給各個BE(或CN)後,各個BE(或CN)會並行掃描Hive儲存系統中的目標資料,並執行計算返回查詢結果。
使用Catalog
方式一:您可以在SQL Editor中使用
SET CATALOG <catalog_name>語句。方式二:在Catalog下拉式清單中直接切換當前會話裡生效的Catalog,然後通過該Catalog查詢資料。

查詢資料
查詢內部資料
如要查詢儲存在StarRocks中的資料,請參見Default Catalog。
查詢外部資料
如要查詢儲存在外部資料源中的資料,請參見查詢外部資料。
跨Catalog查詢資料
如果您想在一個Catalog中查詢其他Catalog中資料,可通過catalog_name.db_name或catalog_name.db_name.table_name的格式來引用目標資料。
在
default_catalog.olap_db下查詢hive_catalog中的hive_table。SELECT * FROM hive_catalog.hive_db.hive_table;在
hive_catalog.hive_db下查詢default_catalog中的olap_table。SELECT * FROM default_catalog.olap_db.olap_table;在
hive_catalog.hive_db中,對hive_table和default_catalog中的olap_table進行聯邦查詢。SELECT * FROM hive_table h JOIN default_catalog.olap_db.olap_table o WHERE h.id = o.id;在其他目錄下,對
hive_catalog中的hive_table和default_catalog中的olap_table進行聯邦查詢。SELECT * FROM hive_catalog.hive_db.hive_table h JOIN default_catalog.olap_db.olap_table o WHERE h.id = o.id;