StarRocks 2.3 以降では、1 つのシステムで内部データと外部データの両方を管理するために使用できるカタログ機能がサポートされています。 この方法で、さまざまな外部データソースに保存されているデータに簡単にアクセスしてクエリを実行できます。 このトピックでは、カタログとは何か、およびカタログを使用して内部データと外部データを管理およびクエリする方法について説明します。
用語
内部データ: StarRocks に保存されているデータ。
外部データ: Apache Hive、Apache Iceberg、Apache Hudi、Delta Lake、Java Database Connectivity(JDBC)などの外部データソースに保存されているデータ。
カタログの概要
StarRocks は、内部カタログと外部カタログの 2 種類のカタログをサポートしています。
内部カタログ: StarRocks クラスタ内のすべての内部データを管理するために使用されます。 たとえば、CREATE DATABASE 文と CREATE TABLE 文を実行して作成されたデータベースとテーブルは、StarRocks クラスタの内部カタログで管理されます。 各 StarRocks クラスタには、default_catalog という名前の内部カタログが 1 つだけあります。
外部カタログ: 外部 Metastore に接続するために使用されます。 StarRocks では、データをインポートまたは移行することなく、外部カタログを使用して外部データに直接クエリを実行できます。 次のタイプの外部カタログを作成できます。
外部カタログを使用して外部データソースからデータをクエリする場合、StarRocks は外部データソースの 2 つのコンポーネントを使用します。
メタデータサービス: StarRocks クラスタのフロントエンドノード(FE)がクエリプランを生成するためにメタデータを公開するために使用されます。
ストレージシステム: データを保存するために使用されます。 データファイルは、分散ファイルシステムまたはオブジェクトストレージシステムにさまざまな形式で保存されます。 FE が生成されたクエリプランを各バックエンドノード(BE)または計算ノード(CN)に配布した後、BE または CN は Hive ストレージシステムで目的のデータを並行してスキャンし、計算を実行してから、クエリ結果を返します。
カタログの使用
方法 1: SQL エディタで
SET CATALOG <catalog_name>文を実行します。方法 2: カタログドロップダウンリストから現在のセッションで有効になるカタログに切り替えてから、カタログを使用してデータのクエリを実行します。

データのクエリ
内部データのクエリ
外部データのクエリ
カタログを跨いでのデータのクエリ
カタログを跨いでデータをクエリする場合、catalog_name.db_name または catalog_name.db_name.table_name の形式で宛先を指定することで、目的のデータを参照できます。
default_catalogカタログで、次の文を実行してhive_catalogカタログのhive_tableテーブルからデータをクエリします。SELECT * FROM hive_catalog.hive_db.hive_table;hive_catalogカタログで、次の文を実行してdefault_catalogカタログのolap_tableテーブルからデータをクエリします。SELECT * FROM default_catalog.olap_db.olap_table;hive_catalogカタログで、次の文を実行してdefault_catalogカタログのhive_tableテーブルと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;