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

news/2024/5/20 3:39:50 标签: hive, hdfs, hadoop

        当手动删除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检查命令:

MSCK [REPAIR] TABLE table_name [ADD/DROP/SYNC PARTITIONS];

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

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的详细信息。


http://www.niftyadmin.cn/n/5114348.html

相关文章

MySQL常用运算符详细介绍

在 MySQL 中,可以通过运算符来获取表结构以外的另一种数据。例如,学生表中存在一个 birth 字段,这个字段表示学生的出生年份。如果想得到这个学生的实际年龄,可以使用 MySQL 中的算术运算符用当前的年份减学生出生的年份&#xff…

【2024秋招】2023-9-14 最右线下后端开发二面

1 OS 1.1 讲讲什么是虚拟内存,怎么实现的 虚拟内存是一种存储器管理能力,它使得一个应用程序似乎有更多的物理内存(RAM)可用,而实际上,系统使用了一部分硬盘空间来模拟额外的 RAM。通过使用虚拟内存&…

RustDay06------Exercise[91-100]

91.将指针还原成指定类型 因为指针不知道里面具体有什么,所以一般约定打上unsafe 申明开发者自己对该部分可用性负责,且在调试的时候也能起强调作用 // tests6.rs // // In this example we take a shallow dive into the Rust standard librarys // unsafe functions. Fix …

新能源汽车展厅用哪些种类的显示屏比较好?

现在有越来越多的新能源汽车展厅开到了商场、购物中心当中。在新能源汽车展厅中,显示屏已经成为不可或缺的设备设施,可以用来展现产品介绍、优惠信息、文化宣传等。那么新能源汽车展厅的显示大屏用什么屏比较好呢? LED大屏幕:LED显…

Integer和int

Integer和int 1.定义2. 区别2.1 数据类型2.2 可空性2.2.1 int的可空性2.2.2 Integer的可空性 2.3 效率和性能2.4 自动装箱和拆箱2.4.1 自动装箱2.4.2 自动拆箱2.4.3 注意事项 3. 比较 1.定义 int是Java中的一种基本数据类型,用于表示整数。它是Java语言中最常用的数…

C语言可变参数函数及其实现

概述 本文讨论C语言中的可变参数函数,特别关注printf和scanf,它们允许根据需要确定参数的个数。这篇文章还介绍了可变参数函数的实现细节和相关宏 1. 可变参数函数的概念 C语言引入了可变参数函数的概念,允许函数的参数个数根据需要确定。…

柴油发电机测试的工作原理

柴油发电机测试的工作原理是通过对柴油发电机进行一系列的性能测试和功能检查,以确保其正常运行和可靠性,通过加载发电机负载,测试发电机的额定功率、最大功率和稳定性。这可以通过连接负载设备,如电阻箱或电动机,来模…

Java计算两个日期之间的工作时长【包含节假日、补班、周末】

目的:用来计算两个日期之间的工作时长 说明:其中节假日、工作日工作时间需要从配置表中获取 直接上代码 public static void main(String[] args) throws Exception {calTime("2023-09-23 07:30:00", "2023-09-25 18:30:05");}/***…