跳到主要内容
版本: 最新版本-3.5

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_nameHive 外部表或 Hudi 外部表的名称。
    partition_nameHive 表或 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');