Hive数据误删除,一定条件下数据还原

误删除Hive表数据处理方法:

例如我有一个表,表名为:biao_ceshi,表的所属库是jwy_sdm,表的分区是etl_rkrq,我误删除了,如果时间来得及的话(一般自动清理回收站的时间是集群配置的,6小时等),恢复方法:

1、在Hdfs里面找删除过的数据文件(这个是华为的FI-Hive环境,其他可能略有不同):

         hadoop fs -ls /user/

         hadoop fs -ls /user/ Hive用户名/.Trash

         hadoop fs -ls /user/ Hive用户名/.Trash/200910150000/

         hadoop fs -ls /user/ Hive用户名/.Trash/200910150000/user/

         hadoop fs -ls /user/ Hive用户名/.Trash/200910150000/user/hive

         hadoop fs -ls /user/ Hive用户名/.Trash/200910150000/user/hive/warehouse

         hadoop fs -ls /user/ Hive用户名/.Trash/200910150000/user/hive/warehouse/jwy_sdm.db

2、正式数据所存储的位置

         hadoop fs -ls /user/hive/warehouse/jwy_sdm.db/ biao_ceshi

3、有分区的话建立子文件夹,格式为:分区字段名=分区值

         hadoop fs -mkdir /user/hive/warehouse/jwy_sdm.db/ biao_ceshi /etl_rkrq=202008

4、挪移数据文件

        hadoop fs -put /上一步找到的数据文件…    /user/hive/warehouse/jwy_sdm.db/ biao_ceshi /etl_rkrq=202008

5、然后修复分区

        msck repair table jwy_sdm. biao_ceshi;

        此时再去查询数据,应该没问题了。

其实这种方式也是加载文本数据入Hive的方法,如果不方便使用load例如文本数据到Hive表中,可以直接放到其数据文件夹下然后修复分区也可。

你可能感兴趣的:(数据库,大数据知识,Hive,Hive数据误删除)