如果不小心误删了hive某一个分区表怎么办?

网上有一个命令恢复法

msck repair table tablename

但是这个命令是将关于分区的元信息添加到hive metastore中,简单来说是将任何存在于hdfs上但不存在于metastore的分区恢复

但如果hdfs上也删了呢?

那只能另辟蹊径,步骤如下

一、需要知道删除前hive表在hdfs上的location,通过如下命令

desc formatted tablename

二、找到hdfs的回收站trash(此处需要开启了回收站功能的hdfs才有)

需要去hdfs目录上找到回收站里你需要的文件,此处我在网上查了资料发现,每个环境的回收站的目录都不一样,所以我得截图只能说具备一点点参考价值(我也找了很久才找着)

三、找到这个文件,那么工作已经完成了99%,只需要将你需要的这个文件copy或者mv到原始的路径下(就是第一步的路径)

hadoop fs -cp 回收站路径/表名/分区名 /原始路径/分区名

 四、数据虽然已经到了原始路径,但是hive表里的数据还没有恢复,那怎么办呢?

如果从头看到尾的话,应该可以秒答这个问题,就是文章开头提到的命令修复

msck repair table tablename

修复完就会出现如图提示,然后用命令查询一下你回收的分区是否真的恢复

show partitions tablename

到这一步,数据恢复就完成了,但是如果hdfs没开回收站机制的话

我也不知道咋办了。。。。。。

好文链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。