更新时间:2026-07-08 GMT+08:00
分享

更新表分区信息

功能描述

恢复(恢复注册)分区表中所有尚未在元数据库中注册的分区信息。典型应用场景:当手动在OBS上添加分区目录后,通过本命令将新增的分区信息刷新到元数据库中,之后即可通过 SHOW PARTITIONS 查看到新增的分区。

Spark SQL提供两种等价语法:MSCK REPAIR TABLE 和 ALTER TABLE ... RECOVER PARTITIONS。

语法格式

  • 方式一:MSCK REPAIR TABLE
    MSCK REPAIR TABLE table_name;
  • 方式二:RECOVER PARTITIONS
    ALTER TABLE table_name RECOVER PARTITIONS;

参数说明

参数

描述

table_name

表名称。分区表的名称,该表必须已存在。

注意事项

  • 分区目录名称必须按照指定的格式输入,即 tablepath/partition_column_name=partition_column_value。
  • 两条语法功能等价,可任选其一使用。
  • 本命令主要用于OBS分区表场景,手动在OBS上添加分区目录后刷新元数据。

示例1:使用 MSCK REPAIR TABLE 更新分区信息

更新表 ptable 在元数据库中的分区信息。

MSCK REPAIR TABLE ptable;

示例2:使用 RECOVER PARTITIONS 更新分区信息

使用等价语法更新表 ptable 的分区信息。

ALTER TABLE ptable RECOVER PARTITIONS;

示例3:添加OBS目录后修复分区

假设已手动在OBS上创建了分区目录 obs://bucketName/datapath/dt=2024-01-01,执行以下命令将新分区注册到元数据中。

MSCK REPAIR TABLE sales_data;

示例4:修复分区后查看分区列表

修复分区信息后,通过 SHOW PARTITIONS 验证新分区已注册。

-- 修复分区
ALTER TABLE sales_data RECOVER PARTITIONS;

-- 查看所有分区
SHOW PARTITIONS sales_data;

相关文档