本文为您介绍什么是Catalog(数据目录), 以及如何使用Catalog查询内外部数据。
基本概念
内部数据:保存在StarRocks中的数据。
外部数据:保存在外部数据源(例如,Apache Hive、Apache Iceberg和Apache Hudi)中的数据。
Catalog
StarRocks 2.3及以上版本支持Catalog功能,方便您轻松访问并查询存储在各类外部源的数据。当前StarRocks提供Internal Catalog和External Catalog两种类型的Catalog。
本文图片和部分内容来源于开源StarRocks的概述。
Internal Catalog:内部数据目录,用于管理StarRocks所有内部数据。例如,执行
CREATE DATABASE
和CREATE TABLE
语句创建的数据库和数据表都由Internal Catalog管理。 每个StarRocks实例有且只有一个Internal Catalog名为default_catalog
。External Catalog:外部数据目录,用于连接外部MetaStore。在StarRocks中,您可以通过External Catalog直接查询外部数据,无需进行数据导入或迁移。
使用External Catalog查询数据时,StarRocks会用到外部数据源的两个组件:
元数据服务:用于将元数据暴露出来供StarRocks的FE进行查询规划。
存储系统:用于存储数据。数据文件以不同的格式存储在分布式文件系统或对象存储系统中。当FE将生成的查询计划分发给各个BE后,各个BE会并行扫描Hive存储系统中的目标数据,并执行计算返回查询结果。
查询数据
查询内部数据
如果需要查询存储在StarRocks中的数据,请参见Default Catalog。
查询外部数据
如果需要查询存储在外部数据源中的数据,请参见External Catalog。
跨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;
- 本页导读 (1)