You need to enable JavaScript to run this app.
导航
Catalog概述
最近更新时间:2024.02.18 19:03:58首次发布时间:2024.01.15 15:02:02

本文介绍什么是 Catalog,以及如何使用 Catalog 管理和查询内外部数据。本文图片和部分内容来源于开源StarRocks的概述

1 基本概念

  • 内部数据:指保存在 StarRocks 中的数据。

  • 外部数据:指保存在外部数据源(如 Apache Hive™、Apache Iceberg、Apache Hudi、Delta Lake、JDBC)中的数据。

2 Catalog

当前 StarRocks 提供两种类型 Catalog:internal catalog 和 external catalog。

  • Internal catalog:内部数据目录,用于管理 StarRocks 所有内部数据。例如,执行CREATE DATABASECREATE TABLE语句创建的数据库和数据表都由 internal catalog 管理。 每个 StarRocks 集群都有且只有一个 internal catalog 名为 default_catalog

  • External catalog:外部数据目录,用于连接外部 metastore。在 StarRocks 中,您可以通过 external catalog 直接查询外部数据,无需进行数据导入或迁移。

    使用 external catalog 查询数据时,StarRocks 会用到外部数据源的两个组件:

    • 元数据服务:用于将元数据暴露出来供 StarRocks 的 FE 进行查询规划。

    • 存储系统:用于存储数据。数据文件以不同的格式存储在分布式文件系统或对象存储系统中。当 FE 将生成的查询计划分发给各个 BE 后,各个 BE 会并行扫描 Hive 存储系统中的目标数据,并执行计算返回查询结果。

3 访问 Catalog

您可以使用 SET CATALOG 切换当前会话里生效的 Catalog,然后通过该 Catalog 查询数据。

4 查询数据

4.1 查询内部数据

如要查询存储在 StarRocks 中的数据,请参见 Default catalog

4.2 查询外部数据

如要查询存储在外部数据源中的数据,请参见查询外部数据

4.3 跨 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_tabledefault_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;