【问题标题】:Hive Partition recoveryHive 分区恢复
【发布时间】:2016-05-26 06:15:43
【问题描述】:

如何以简单的方式恢复分区。这是场景:

  1. 在现有外部表“t”上有“n”个分区
  2. 删除表't'
  3. 重新创建表 't'// 注意:同一个表,但排除了某些列
  4. 如何恢复步骤 #1 中表“t”存在的“n”个分区?

我可以通过编写一些脚本手动更改表以添加“n”分区。但这非常乏味。有没有内置的东西可以恢复这些分区?

【问题讨论】:

    标签: hive hdfs hql hadoop-partitioning


    【解决方案1】:

    当分区目录仍然存在于 HDFS 中时,只需运行以下命令:

    MSCK REPAIR TABLE table_name;
    

    它根据表目录中存在的内容将分区定义添加到元存储。

    【讨论】:

    • 我没有尝试使用自定义 Serde,但我认为 Serdes 不会影响此命令,它应该可以正常工作!
    • 是的,你是对的,Serde 应该没有任何问题。但是从文档中提到的是,如果只有分区格式为“yyyy-mm-dd”,则可以恢复分区。不确定如何用于自定义分区格式?在我的情况下,我有类似 yyyymmdd 的东西。
    • documentation 对此没有任何限制,但从逻辑上讲,有一点需要注意,分区格式应该是'key=value',例如。 date=160528 有没有连字符也没问题。
    【解决方案2】:

    元数据不会保存在垃圾箱中,会被永久删除;您将无法恢复删除的表、分区等的元数据。参考:http://www.cloudera.com/documentation/archive/cdh/4-x/4-7-1/CDH4-Installation-Guide/cdh4ig_hive_trash.html

    【讨论】:

      猜你喜欢
      • 2020-07-19
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      相关资源
      最近更新 更多