【starrocks学习】之catalog

news/2025/1/30 11:11:36/

目录

一、介绍

二、Catalog的分类

三、使用方法

四、简单示例


一、介绍

StarRocks的Catalog功能‌是一种数据目录管理工具,用于同时管理和查询内部和外部数据。StarRocks从2.3版本开始支持Catalog功能,允许用户在一个系统中方便地访问和查询存储在各种外部数据源(如Hive、Iceberg、Hudi、Delta Lake、JDBC)的数据,而无需进行数据导入或迁移‌。

二、Catalog的分类

  • Internal Catalog‌:用于管理StarRocks内部的数据,例如通过CREATE DATABASE和CREATE TABLE语句创建的数据库和数据表。每个StarRocks集群都有一个默认的internal catalog,名为default_catalog‌。
  • External Catalog‌:用于连接外部数据源(如Hive、Iceberg、Hudi、Delta Lake、JDBC)。通过external catalog,用户可以直接查询外部数据,而无需进行数据导入或迁移‌。

  • Hive catalog:用于查询 Hive 集群中的数据。

  • Iceberg catalog:用于查询 Iceberg 集群中的数据。

  • Hudi catalog:用于查询 Hudi 集群中的数据。

  • Delta Lake catalog:用于查询 Delta Lake 集群中的数据。

  • JDBC catalog:用于查询 JDBC 数据源中的数据。

  • Elasticsearch catalog:用于查询 Elasticsearch 中的数据。该特性自 3.1 版本起支持。

  • Paimon catalog:用于查询 Paimon 中的数据。该特性自 3.1 版本起支持。

  • Unified catalog:把 Hive、Iceberg、Hudi 和 Delta Lake 作为一个融合的数据源,从中查询数据。该特性自 3.2 版本起支持。

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

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

三、使用方法

  • 查询内部数据‌:使用SELECT * FROM <table_name>;SELECT * FROM default_catalog.<db_name>.<table_name>;‌。
  • 查询外部数据‌:例如,查询Hive数据时,需要先创建Hive catalog,然后使用该catalog进行查询‌。

四、简单示例

--创建hive catalog
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
("type" = "hive",GeneralParams,MetastoreParams,StorageCredentialParams,MetadataUpdateParams
);--查询当前所在 StarRocks 集群里所有 Catalog
SHOW CATALOGS;--查看表结构
DESC[RIBE] <catalog_name>.<database_name>.<table_name>--查询 Hive Catalog hive_catalog_name 的创建语句
SHOW CREATE CATALOG hive_catalog_name;-- 切换当前会话生效的 Catalog:
SET CATALOG <catalog_name>;-- 指定当前会话生效的数据库:
USE <db_name>;--通过 USE 直接将会话切换到目标 Hive Catalog 下的指定数据库
USE <catalog_name>.<db_name>;--删除 Hive Catalog hive_catalog_name
DROP Catalog hive_catalog_name;--通过 SHOW DATABASES 查看指定 Catalog 所属的 Hive 集群中的数据库
SHOW DATABASES FROM <catalog_name>;--通过 SELECT 查询目标数据库中的目标表
SELECT count(*) FROM <table_name> LIMIT 10;--在 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;--假设有一个 OLAP 表,表名为 olap_tbl。您可以这样来转换该表中的数据,并把数据导入到 StarRocks 中
INSERT INTO default_catalog.olap_db.olap_tbl SELECT * FROM hive_table;-- GRANT 来赋予角色某个 Hive Catalog 内所有表和视图的查询权限
GRANT SELECT ON ALL TABLES IN ALL DATABASES TO ROLE <role_name>;-- 创建角色 hive_role_table。
CREATE ROLE hive_role_table;-- 切换到数据目录 hive_catalog。
SET CATALOG hive_catalog;-- 把 hive_catalog 内所有表和视图的查询权限赋予 hive_role_table。
GRANT SELECT ON ALL TABLES IN ALL DATABASES TO ROLE hive_role_table;--创建hive表
CREATE TABLE [IF NOT EXISTS] [database.]table_name
(column_definition1[, column_definition2, ...
partition_column_definition1,partition_column_definition2...])
[partition_desc]
[PROPERTIES ("key" = "value", ...)]
[AS SELECT query]
[LIKE [database.]<source_table_name>];--非分区表ddl
CREATE TABLE unpartition_tbl
(id int,score double
);--分区表ddl
CREATE TABLE partition_tbl_1
(action varchar(20),id int,dt date
)
PARTITION BY (id,dt);--插入数据
INSERT {INTO | OVERWRITE} <table_name>
[ (column_name [, ...]) ]
{ VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query };-- 向指定分区写入数据。
INSERT {INTO | OVERWRITE} <table_name>
PARTITION (par_col1=<value> [, par_col2=<value>...])
{ VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query };--删除数据(不会删除表对应的文件路径,但是会删除 HDFS 或对象存储上的表数据)
DROP TABLE <table_name> FORCE;


http://www.ppmy.cn/news/1567876.html

相关文章

【云安全】云原生-K8S-搭建/安装/部署

一、准备3台虚拟机 务必保证3台是同样的操作系统&#xff01; 1、我这里原有1台centos7&#xff0c;为了节省资源和效率&#xff0c;打算通过“创建链接克隆”2台出来 2、克隆之前&#xff0c;先看一下是否存在k8s相关组件&#xff0c;或者docker相关组件 3、卸载原有的docker …

PostgreSQL 约束

PostgreSQL 约束 在数据库设计中,约束(Constraint)是一种规则,用于确保数据库中的数据满足特定的条件。PostgreSQL 作为一款功能强大的开源关系型数据库管理系统,提供了多种约束类型,以帮助开发者维护数据的一致性和准确性。本文将详细介绍 PostgreSQL 中常见的约束类型…

OpenAI掀桌子!免费版ChatGPT,提供o3-mini模型!

逆天免费用 今天凌晨&#xff0c;OpenAI联合创始人兼首席执行官Sam Altman宣布了一个大消息——免费版ChatGPT&#xff0c;将提供o3-mini模型&#xff01; 网页们纷纷不淡定了 看来OpenAI&#xff0c;这o3-mini还没正式上线呢&#xff0c;就免费开放使用了。 不过还是要感谢…

ML基础-Jupyter notebook中的魔法命令

在 Jupyter Notebook 或 IPython 环境中&#xff0c;“魔法命令”&#xff08;Magic Commands&#xff09;是一些以百分号&#xff08;%&#xff09;或惊叹号&#xff08;!)开头的特殊命令&#xff0c;用于执行一些与代码运行环境相关的操作&#xff0c;而不仅仅是执行普通的 P…

2025美赛MCM数学建模A题:《石头台阶的“记忆”:如何用数学揭开历史的足迹》(全网最全思路+模型)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ 《石头台阶的“记忆”&#xff1a;如何用数学揭开历史的足迹》 目录 《石头台阶的“记忆”&#xff1a;如何用数学揭开历史的足迹》 ✨摘要✨ ✨引言✨ 1. 引言的结构 2. 撰写步骤 &#xff08;1&#xff09;研究背景 &#…

Java面试题2025-Spring

Spring面试专题 1.Spring应该很熟悉吧&#xff1f;来介绍下你的Spring的理解 1.1 Spring的发展历程 先介绍Spring是怎么来的&#xff0c;发展中有哪些核心的节点&#xff0c;当前的最新版本是什么等 通过上图可以比较清晰的看到Spring的各个时间版本对应的时间节点了。也就是…

26考研资料分享 百度网盘

基础班&#xff1a; 通过网盘分享的文件&#xff1a;2026【考研数学】等3个文件 链接:https://pan.baidu.com/s/1djzJiut1h0DH8WmrI05YHg?pwd1234 提取码:1234--来自百度网盘超级会员v3的分享 通过网盘分享的文件&#xff1a;01、2026【考研政治】 链接:https://pan.baidu.…

练习题 - Django 4.x Auth 身份验证使用示例和配置方法

Django 是一个功能强大且灵活的 Python Web 框架,其内置的身份验证系统使得用户注册、登录、登出等操作变得非常简单。对于初学者或自学者来说,理解并掌握 Django 的身份验证机制,是掌握 Web 开发的关键一步。 在本文中,我们将通过一些实际生活中的示例,逐步探索 Django …