默认情况下,StarRocks 会缓存 Hive 、Hudi的元数据、并以异步模式自动更新缓存的元数据,从而提高查询性能。此外,表结构变更或更新后,您也可以使用 REFRESH EXTERNAL TABLE 手动更新元数据,从而确保 StarRocks 第一时间生成合理的查询计划。
本文介绍如何手动更新缓存的元数据。
REFRESH EXTERNAL TABLE [external_catalog.][db_name.]<table_name> [PARTITION ('partition_name', ...)]
参数 | 必选 | 说明 |
---|---|---|
external_catalog | 否 | Hive catalog 或 Hudi catalog 名称。 |
db_name | 否 | Hive 表或 Hudi 表所在的数据库名。 |
table_name | 是 | Hive 表或 Hudi 表名。 |
partition_name | 否 | Hive 表或 Hudi 表中的分区名。如指定,则更新缓存的 Hive 表或 Hudi 表指定分区的元数据。 |
说明
只有拥有 ALTER_PRIV
权限的用户才可以执行该语句更新缓存的元数据。
示例一:更新缓存的 Hive 表 hive_table
的元数据。
REFRESH EXTERNAL TABLE hive_catalog.hive_db.hive_table;
或
USE hive_catalog.hive_db; REFRESH EXTERNAL TABLE hive_table;
示例二:更新缓存的 Hudi 表 hudi_table
中分区 p1
和 p2
的元数据。
REFRESH EXTERNAL TABLE hudi_catalog.hudi_db.hudi_table PARTITION ('p1', 'p2');