1.前提:要开启垃圾箱,才能进行数据表恢复
core-site.xml配置一下参数,fs.trash.checkpoint.interval 为0,表示禁用垃圾箱;设置对应时间【单位:分钟】进行垃圾文件回收、暂存
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>0</value>
</property>
2.从垃圾箱查找到对应时间删除、覆盖的数据
hdfs dfs -ls /user/hadoop/.Trash/220628170000/hive//dw/ods.db/ods_test/
3.然后创建临时表,复制到临时表的hdfs目录进行恢复
create table? ods.ods_test_2022???like?ods_test ;
hdfs dfs -cp?hdfs dfs -ls /user/hadoop/.Trash/220628170000/hive//dw/ods.db/ods_test/*?hdfs dfs -ls /user/hadoop/.Trash/220628170000/hive//dw/ods.db/ods_test_20222/
4.查看无误后,进行元数据修复【恢复元数据,解决分区表分区信息;解决Spark读取非分区表无数据的情况(实际已经恢复成)】
hive -e "msck repair table ods.ods_test_2022;"
5.然后将临时表命名为目标数据表
hive>
alter table test ? rename to ods_test_2022;
|