Overview
このトピックでは、catalog とは何か、catalog を使用して内部データと外部データを管理およびクエリする方法について説明します。Catalog を使用すると、1 つのシステムで内部データと外部データを管理でき、さまざまな外部システムに保存されているデータを簡単にクエリおよび分析する柔軟な方法を提供します。
Basic concepts
- Internal data: CelerData に保存されているデータを指します。
- External data: Apache Hive™、Apache Iceberg、Apache Hudi、Delta Lake などの外部データソースに保存されているデータを指します。
Catalog
現在、CelerData は 2 種類の catalog を提供しています: internal catalog と external catalog。
-
Internal catalog は CelerData の内部データを管理します。たとえば、CREATE DATABASE または CREATE TABLE ステートメントを実行してデータベースまたはテーブルを作成すると、そのデータベースまたはテーブルは internal catalog に保存されます。各 CelerData クラスターには、default_catalog という名前の internal catalog が 1 つだけあります。
-
External catalog は外部で管理されているメタストアへのリンクのように機能し、CelerData に外部データソースへの直接アクセスを提供します。データロードや移行を行わずに外部データを直接クエリできます。現在、CelerData は次の種類の external catalog をサポートしています:
- Hive catalog: Hive からデータをクエリするために使用されます。
- Iceberg catalog: Iceberg からデータをクエリするために使用されます。
- Hudi catalog: Hudi からデータをクエリするために使用されます。
- Delta Lake catalog: Delta Lake からデータをクエリするために使用されます。
- JDBC catalog: JDBC 互換のデータソースからデータをクエリするために使用されます。
CelerData は外部データをクエリする際に、外部データソースの次の 2 つのコンポーネントとやり取りします:
- Metadata service: FEs が外部データソースのメタデータにアクセスするために使用されます。FEs はメタデータに基づいてクエリ実行計画を生成します。
- Data storage system: 外部データを保存するために使用されます。分散ファイルシステムとオブジェクトストレージシステムの両方がデータストレージシステムとして使用され、さまざまな形式のデータファイルを保存できます。FEs がクエリ実行計画をすべての BEs に配布した後、すべての BEs が対象の外部データを並行してスキャンし、計算を行い、クエリ結果を返します。
Access catalog
SET CATALOG ステートメントを使用して、現在のセッションで指定された catalog に切り替えることができま す。その後、その catalog を使用してデータをクエリできます。
Query data
Query internal data
CelerData 内のデータをクエリするには、Default catalog を参照してください。
Query external data
外部データソースからデータをクエリするには、Hive catalog、Iceberg catalog、Hudi catalog、Delta Lake catalog、および JDBC catalog を参照してください。
Cross-catalog query
現在の catalog からクロスカタログフェデレーテッドクエリを実行するには、catalog_name.database_name
または catalog_name.database_name.table_name
形式でクエリしたいデータを指定します。
-
現在のセッションが
default_catalog.olap_db
の場合、hive_db
の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_catalog
のhive_table
とdefault_catalog
のolap_table
でジョインクエリを実行します。SELECT * FROM hive_table h JOIN default_catalog.olap_db.olap_table o WHERE h.id = o.id;
-
現在のセッションが別の catalog の場合、
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;