当数仓中表被误删

实际工作中,误删表虽然是小概率时间,但同时也是不可避免又最不想发生的事了。那么,万一误删了如何处理呢。

1-表还在,数据被误删了

2-哎,都没了

第一种情况

a-从HDFS的回收站中将数据重新拷贝到表格中

hdfs dfs -cp /user/USER_NAME/.Trash/user/hive/warehouse/db_name.db/table_name /user/hive/....

b-执行加载数据命令

load data inpath 'path...' into table table name [partition(xxx)]

如果重新拷贝数据加载后表格咋zeppelin或其他平台不能用,可以尝试先建一个临时表,数据load到临时表中,然后select 临时表 insert overwrite到原表中。

需要注意,此处的数据恢复完全依赖于HDFS的回收站机制开启了,但默认是不开启的,如果你是HDFS管路员,开启方法可以百度,赶紧搞起来。

第二种情况

前几天遇到的其实是第二种情况,当时是表结构和数据都没有了,因为是dw层的表,可以跑一边azkaban任务把数据重新生成,但表没了需要先恢复表结构。

最开始是想根据生成数据的sql一点一点的拼凑建表语句,但其实有数据生成语句,直接create table  tmp_table_name as 数据生成语句就能生成一个结构相同的表,然后后边就简单了,可以show create table tmp_table_name来得到被删除表的建表语句。

猜你喜欢

转载自blog.csdn.net/weixin_39445556/article/details/108143605