本文為您介紹什麼是Catalog(資料目錄),以及如何使用Catalog管理和查詢內外部資料。
基本概念
內部資料:儲存在StarRocks中的資料。
外部資料:儲存在外部資料源(例如Apache Hive、Apache Iceberg和Apache Hudi)中的資料。
Catalog
StarRocks 2.3及以上版本支援Catalog功能,方便您輕鬆訪問並查詢儲存在各類外部源的資料。當前StarRocks提供Internal Catalog和External Catalog兩種類型的Catalog。
Internal Catalog:內部資料目錄,用於管理StarRocks所有內部資料。例如,執行
CREATE DATABASE和CREATE TABLE語句建立的資料庫和資料表都由Internal Catalog管理。 每個StarRocks叢集都有且只有一個Internal Catalog名為default_catalog。External Catalog:外部資料目錄,用於管理外部資料源的訪問資訊。例如,資料來源類型和Hive MetaStore的URI等。在StarRocks中,您可以通過External Catalog直接查詢外部資料。
目前支援建立以下資料來源的External Catalog:
Hive資料來源:用於查詢Hive資料。
Iceberg資料來源:用於查詢Iceberg資料。
Hudi資料來源:用於查詢Hudi資料。
Paimon資料來源:用於查詢Paimon資料。
Delta Lake資料來源:用於查詢Delta Lake資料。
使用External Catalog查詢資料時,StarRocks會用到外部資料源的兩個組件:
中繼資料服務:用於將中繼資料暴露出來供StarRocks的FE進行查詢規劃。
儲存系統:用於儲存資料。資料檔案以不同的格式儲存在Distributed File System或Object Storage Service系統中。當FE將產生的查詢計劃分發給各個BE後,各個BE會並行掃描Hive儲存系統中的目標資料,並執行計算返回查詢結果。
查詢資料
查詢內部資料
如果需要查詢儲存在StarRocks中的資料,請參見內表資料來源。
查詢外部資料
如果需要查詢儲存在外部資料源中的資料,請參見資料湖分析。
跨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;