HIVE-17824,删除hdfs分区信息,清理metastore元数据

**当手动删除HDFS 分区数据时,但是并没有清理 Hive 中的分区元数据,删除操作无法自动更新hive分区表元数据。**也就是从hdfs中删除大量分区数据,并没有执行如下命令:

alter table drop partition commad

从hive 3.0.0开始可以使用MSCK的方法发现新分区或删除丢失的分区;

MSCK REPAIR TABLE table_name ADD/DROP/SYNC PARTITIONS

这种方式是在HIVE-17824中实现的。

若手动删除 HDFS 上多个分区文件夹,且快速刷新分区,则需要在存在external表执行如下操作:

  • 删除表(DROP TABLE table_name)

  • 重新创建表(CREATE EXTERNAL TABLE table_name ...)

  • 修复它(MSCK REPAIR TABLE table_name)

如果分区数量较多,需要执行的时间很长。另外一种解决方案是对每个已删除的分区文件夹使用ALTER TABLE DROP PARTITION (...),但如果删除了多个分区,这可能会很乏味。

用户可用修复表option选项运行metastore检查命令:

bash 复制代码
MSCK [REPAIR] TABLE table_name [ADD/DROP/SYNC PARTITIONS];

对于不存在元数据的分区,会更新到Hive metastore。

bash 复制代码
1.MSC命令的默认选项是"ADD PARTITIONS"。通过这个选项,它会将所有HDFS上存在但不存在metastore的分区添加到metastore中。
2.DROP PARTITIONS选项将从metastore中删除已经从HDFS中删除的分区信息。
3.SYNC PARTITIONS选项相当于同时调用ADD和DROP PARTITIONS。

详情请参阅HIVE-874和HIVE-17824。当有大量未跟踪的分区时,运行MSCK REPAIR TABLE批处理避免OOME(内存不足错误)。通过为属性hive.msck.repair.batch.size提供配置的批大小,它可以在内部的批中运行。属性的默认值是0,这意味着它将一次执行所有分区。

不带REPAIR选项的MSCK命令可用于查找元数据mismatch metastore的详细信息。

相关推荐
liuxiaowei311 小时前
Winform+WPF双框架实战:喷涂工艺SCADA上位机从0到1搭建(附采集监控源码+车间踩坑实录)
大数据·hadoop·wpf
humbinal1 天前
同时支持 gui & cli 的 parquet 文件查看工具,高性能小清新!
hive·python·rust·spark·开源·github·parquet
hkNaruto3 天前
【大数据】《传统Hadoop大数据技术入门:补充与进阶——从数据格式到智能决策的问答实录》
大数据·hadoop·分布式
吾AI科技3 天前
基于Tez引擎的 Hive SQL 性能优化
大数据·hive·性能优化·tez
牛奶咖啡134 天前
大数据Hadoop运维应用实践——双NameNode高可用Hadoop集群架构(下)
大数据·hadoop·hadoop集群配置文件解析·hadoop高可用集群安装部署·配置指定多台服务器相互免密·配置hadoop服务开机自启·ansible部署hadoop
abcy0712134 天前
hive 执行器原理
hive
李昊哲小课5 天前
spark4 集群安装
大数据·hadoop·zookeeper·spark
buligbulig5 天前
Hadoop环境安装和集群创建
大数据·hadoop·分布式
香山上的麻雀10086 天前
Hive内部表(MANAGED_TABLE)的“批量删除分区”特性详解
数据仓库·hive·hadoop
牛奶咖啡138 天前
大数据Hadoop运维应用实践——双NameNode高可用Hadoop集群架构(上)
hadoop·高可用hadoop集群搭建·给服务器做免密信任·修改服务器主机名称·服务器本地配置主机名与ip映射·服务器配置jdk环境·服务器安装zooker