• 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检查命令:

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

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

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

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

  • 相关阅读:
    Luogu P3379 【模板】最近公共祖先(LCA),树链剖分求LCA模板
    颜色不变的彩色图像对比度调整
    QML地图Map中使用QPainterPath,并显示任意点经纬度位置
    ImageNet Classification with Deep Convolutional Neural Networks
    Word发布到分类内测试1
    创建共享内存后,进程结束,共享内存是否会消失?
    java Excel导出工具类
    PyTorch学习笔记-Convolution Layers与Pooling Layers
    Flutter 必须知道的布局规则
    ThreadLocal
  • 原文地址:https://blog.csdn.net/jiedaodezhuti/article/details/133983516