REFRESH EXTERNAL TABLE
刷新 StarRocks 中缓存的外部表元数据。 元数据来自数据湖中的表。 此语句用于以下场景
- 外部表:当使用 Hive 外部表或 Hudi 外部表查询 Apache Hive™ 或 Apache Hudi 中的数据时,可以执行此语句来更新 StarRocks 中缓存的 Hive 表或 Hudi 表的元数据。
- 外部 Catalog:当使用外部 Catalog查询对应数据源中的数据时,可以执行此语句来更新 StarRocks 中缓存的元数据。
注意
只有具有相应外部表的 ALTER 权限的用户才能执行此操作。
基本概念
- Hive 外部表:在 StarRocks 中创建和存储。您可以使用它来查询 Hive 数据。
- Hudi 外部表:在 StarRocks 中创建和存储。您可以使用它来查询 Hudi 数据。
- Hive 表:在 Hive 中创建和存储。
- Hudi 表:在 Hudi 中创建和存储。
语法和参数
下面介绍基于不同情况的语法和参数
-
外部表
REFRESH EXTERNAL TABLE table_name
[PARTITION ('partition_name', ...)]参数 必需 描述 table_name 是 Hive 外部表或 Hudi 外部表的名称。 partition_name 否 Hive 表或 Hudi 表的分区名称。指定此参数会更新 StarRocks 中缓存的 Hive 表和 Hudi 表分区的元数据。 -
外部 Catalog
REFRESH EXTERNAL TABLE [external_catalog.][db_name.]table_name
[PARTITION ('partition_name', ...)]参数 必需 描述 external_catalog 否 外部 Catalog 的名称,支持 Hive、Hudi、Delta Lake 和 MaxCompute(自 v3.3 起)Catalog。 db_name 否 目标表所在的数据库的名称。 table_name 是 表的名称。 partition_name 否 分区的名称。指定此参数会更新 StarRocks 中缓存的目标表分区的元数据。
使用说明
只有具有 ALTER_PRIV
权限的用户才能执行此语句来更新 StarRocks 中缓存的 Hive 表和 Hudi 表的元数据。
示例
不同情况下的使用示例如下
外部表
示例 1:通过指定外部表 hive1
来更新 StarRocks 中相应 Hive 表的缓存元数据。
REFRESH EXTERNAL TABLE hive1;
示例 2:通过指定外部表 hudi1
和该表中的分区来更新 StarRocks 中相应 Hudi 表分区的缓存元数据。
REFRESH EXTERNAL TABLE hudi1
PARTITION ('date=2022-12-20', 'date=2022-12-21');
外部 Catalog
示例 1:更新 StarRocks 中缓存的 hive_table
的元数据。
REFRESH EXTERNAL TABLE hive_catalog.hive_db.hive_table;
或
USE hive_catalog.hive_db;
REFRESH EXTERNAL TABLE hive_table;
示例 2:更新 StarRocks 中缓存的 hive_table
中二级分区 p2
的元数据。
USE hive_catalog.hive_db;
REFRESH EXTERNAL TABLE hive_table PARTITION ('p1=${date}/p2=${hour}');
示例 3:更新 StarRocks 中缓存的 hudi_table
分区的元数据。
REFRESH EXTERNAL TABLE hudi_catalog.hudi_db.hudi_table
PARTITION ('date=2022-12-20', 'date=2022-12-21');