Hadoop之hive的drop table恢复
2016-03-24 13:19
351 查看
一、引言:
快下班的时候我开发同事问能不能将hive中drop掉的数据恢复过来,我记得是有开回收站的,当时我回答说可以恢复的。
二、恢复过程:
在之前我有对hadoop的回收站有过了解,就是将hdfs dfs -rm删除掉的文件进行恢复,只需要hdfs dfs -mv将文件从回收站中搬过来就行,我就先使用这个方法,但是效果不佳,执行select count(*) from table_name,得到的结果为0。这个时候我想到这个表被drop掉以后在mysql的元数据库中已经没有数据了,那就得需要将这些数据的信息重新写入到mysql中。具体恢复步骤如下:
1、创建表:
2、将回收站中的数据cp出来一份:
3、将临时目录下的数据load到表中:
备注:这里需要将每个分区的数据load到相应的分区表中。
4、验证数据:
三、重点说明:
hive 中使用truncate命令将表截断的话,它是不会进回收站的,是没办法恢复的。这个跟oracle truncate有点类似的。
快下班的时候我开发同事问能不能将hive中drop掉的数据恢复过来,我记得是有开回收站的,当时我回答说可以恢复的。
二、恢复过程:
在之前我有对hadoop的回收站有过了解,就是将hdfs dfs -rm删除掉的文件进行恢复,只需要hdfs dfs -mv将文件从回收站中搬过来就行,我就先使用这个方法,但是效果不佳,执行select count(*) from table_name,得到的结果为0。这个时候我想到这个表被drop掉以后在mysql的元数据库中已经没有数据了,那就得需要将这些数据的信息重新写入到mysql中。具体恢复步骤如下:
1、创建表:
CREATE TABLE temp_richard( op_time string, province_id string, pay_type string, client_type string, index_id string, index_value bigint ) PARTITIONED BY (dayid string) stored as rcfile location '/dw/tmp/temp_richard';
2、将回收站中的数据cp出来一份:
hdfs dfs -cp /user/hadoop/.Trash/Current/dw/dm/tmp_richard /tmp/richard/
3、将临时目录下的数据load到表中:
load data inpath '/tmp/zhulh/dayid=20160101/000000_0' into table tmp_richard PARTITION (dayid='20160101');
备注:这里需要将每个分区的数据load到相应的分区表中。
4、验证数据:
hive> select count(*) from tmp_richard;
三、重点说明:
hive 中使用truncate命令将表截断的话,它是不会进回收站的,是没办法恢复的。这个跟oracle truncate有点类似的。
相关文章推荐
- linux(centos7)+apache+php7 安装教程
- oop典型应用:实体类
- (转)73条日常Linux shell命令
- Opencv imread 不能正常读取
- 使用110云报警监控我的世界
- [basic linux基础]-进程
- Nginx搭建反向代理服务器过程详解
- Linux内存管理Linux Memory Management Notes
- linux安装cnn库
- Linux命令-进程后台执行:nohup(就是不挂起的意思)
- Linux编程---线程
- linux中安装jdk+jmeter-
- linux中安装jdk+jmeter-
- docker exec 运行命令
- docker exec 运行命令
- docker exec 运行命令
- linux安装boost库
- RGBD物体识别(3)--ubuntu安装opencv3和opencv-contrib
- bzoj 维护序列seq(双标记线段树)
- Quartz.NET开源作业调度架构