本文为您介绍什么是Catalog(数据目录), 以及如何使用Catalog管理和查询内外部数据。

基本概念

  • 内部数据:保存在StarRocks中的数据。
  • 外部数据:保存在外部数据源(例如Apache Hive、Apache Iceberg和Apache Hudi)中的数据。

Catalog

StarRocks 2.3及以上版本支持Catalog功能,方便您轻松访问并查询存储在各类外部源的数据。当前StarRocks提供Internal Catalog和External Catalog两种类型的Catalog。

  • Internal Catalog:内部数据目录,用于管理StarRocks所有内部数据。例如,执行CREATE DATABASECREATE TABLE语句创建的数据库和数据表都由Internal Catalog管理。 每个StarRocks集群都有且只有一个Internal Catalog名为default_catalog
  • External Catalog:外部数据目录,用于管理外部数据源的访问信息。例如,数据源类型和Hive MetaStore的URI等。在StarRocks中,您可以通过External Catalog直接查询外部数据。
    目前支持创建以下数据源的External Catalog:
    使用External Catalog查询数据时,StarRocks会用到外部数据源的两个组件:
    • 元数据服务:用于将元数据暴露出来供StarRocks的FE进行查询规划。
    • 存储系统:用于存储数据。数据文件以不同的格式存储在分布式文件系统或对象存储系统中。当FE将生成的查询计划分发给各个BE后,各个BE会并行扫描Hive存储系统中的目标数据,并执行计算返回查询结果。

查询数据

查询内部数据

如果需要查询存储在StarRocks中的数据,请参见内表数据源

查询外部数据

如果需要查询存储在外部数据源中的数据,请参见数据湖分析

跨Catalog查询数据

如果想在一个Catalog中查询其他Catalog中数据,可通过catalog_name.db_namecatalog_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_tabledefault_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;