更新表分区信息
功能描述
恢复(恢复注册)分区表中所有尚未在元数据库中注册的分区信息。典型应用场景:当手动在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;