StarRocks查询Hive集群数据
更新时间:2026-07-21
StarRocks支持通过External Catalog(外部数据目录)直接查询Hive集群中的数据,无需将数据导入StarRocks。创建Hive Catalog后,即可像访问内部表一样查询存储在Hive中的数据,原生支持ORC、Parquet、Text等文件格式。
功能概述
External Catalog是StarRocks用于访问外部数据源的机制。通过创建Hive类型的External Catalog,StarRocks可直连Hive Metastore获取元数据,并读取存储在对象存储(如BOS)上的Hive表数据,实现对Hive数据的即席查询和联邦分析,无需数据搬迁。
前提条件
- 已创建BMR StarRocks集群,且集群状态为运行中。
- 已获取Hive Metastore的访问地址(Thrift地址)。
- 已获取访问Hive数据所在对象存储的访问密钥(Access Key、Secret Key)及Endpoint。
- 已通过SQL客户端(如MySQL客户端)连接到StarRocks。
创建Hive Catalog
通过CREATE EXTERNAL CATALOG创建Hive类型的Catalog,并在PROPERTIES中配置Hive Metastore地址及对象存储访问信息。
Plain Text
1CREATE EXTERNAL CATALOG bmr_hive_catalog
2COMMENT 'Hive'
3PROPERTIES (
4 "type" = "hive",
5 "hive.metastore.uris" = "thrift://<metastore_host>:9083",
6 "aws.s3.endpoint" = "http://s3.xxx.bcebos.com",
7 "aws.s3.access_key" = "<access_key>",
8 "aws.s3.secret_key" = "<secret_key>",
9 "aws.s3.enable_path_style_access" = "true"
10);
表一 Hive Catalog主要配置项说明
| 配置项 | 说明 |
|---|---|
| type | Catalog类型,Hive数据源固定为hive。 |
| hive.metastore.uris | Hive Metastore的Thrift访问地址,格式为thrift://<host>:<port>。 |
| aws.s3.endpoint | Hive数据所在对象存储的访问地址(Endpoint)。 |
| aws.s3.access_key | 访问对象存储的Access Key。 |
| aws.s3.secret_key | 访问对象存储的Secret Key。 |
| aws.s3.enable_path_style_access | 是否使用path-style访问方式,取值true或false。 |
切换Catalog
创建完成后,切换到该Catalog:
Plain Text
1SET CATALOG bmr_hive_catalog;
查询Hive数据
切换Catalog后,选择目标数据库并查询Hive表数据:
Plain Text
1USE <hive_db>;
2SELECT * FROM <hive_table> LIMIT 10;
StarRocks通过External Catalog直连Hive Metastore读取元数据和数据,原生支持ORC、Parquet、Text等格式,无需数据导入即可完成查询。
注意事项
- Hive Catalog依赖Hive Metastore,请确保配置的Metastore地址可正常访问。
- 访问对象存储上的Hive数据需配置正确的访问密钥和Endpoint,密钥无误才能读取数据。
- External Catalog仅用于查询外部数据,不改变Hive中的原始数据。
评价此篇文章
