hive误删表,数据恢复
·
本文删除的是hive的分区表,parquet格式snappy压缩。有分桶,现在做一下数据的恢复
-
首先你要知道你的hdfs回收站是否开启
-
找到你的回收站里的刚才删除的hive表数据的文件,前提是你的表示drop的,而不是truncate的,truncate的表数据我暂时不知道能不能恢复

我们hive表删除的数据是在 标记1 的这个文件里(Current)这个需要看你的配置和个人的登陆服务器情况,但是一定不会在标记2这里
-
新建原表
-
CREATE TABLE `hive_national_f4_engine_data`( `rowkey` string COMMENT 'rowkey', `vin` string COMMENT 'vin', `vid` int COMMENT 'vid', `collecttime` string COMMENT '采集时间', `receivetime` string COMMENT '接收时间', `protocoltype` string COMMENT '端口号', `speed` int COMMENT '车速', `atmosphericpressure` int COMMENT '大气压', `outputtorqueofengine` int COMMENT '发动机净输出扭矩', `frictiontorque` int COMMENT '摩擦扭矩', `enginerotation` int COMMENT '发动机转速', `enginefuelflow` int COMMENT '发动机燃料流量', `upscrsensoroutput` int COMMENT 'SCR上游NOX传感器输出值', `downscrsensoroutput` int COMMENT 'SCR下游NOX传感器输出值', `reactantremind` int COMMENT '反应剂余量', `sensorinputquantity` int COMMENT '空气质量流量传感器读取的进气量', `scroutlettemperature` double COMMENT '出口温度', `scrinlettemperature` double COMMENT '入口温度', `dpfpressurediff` int COMMENT 'DPF压差', `coolantemperature` int COMMENT '发动机冷却液温度', `tankleve` int COMMENT '油箱液位', `actualegrvalveopening` double COMMENT '实际的EGR阀开度', `setegrvalveopening` double COMMENT '设置的EGR阀开度', `locatiostatus` int COMMENT '定位状态', `lng` int COMMENT '经度', `lat` int COMMENT '维度', `dlng` int COMMENT '百度经度', `dlat` int COMMENT '百度维度', `isreissue` int COMMENT '是否是补发数据', `totoalmileage` bigint COMMENT '累计里程', `changemileage` bigint COMMENT '变化里程', `downnoxsensoroutput` int COMMENT '催化器下游NOX传感器输出值', `uposensoroutput` int COMMENT '催化器上游氧传感器输出值', `downosensoroutput` int COMMENT '催化器下游氧传感器输出值', `mechanicaltype` int COMMENT '机械类型') PARTITIONED BY ( `year` string COMMENT 'year=yyyy', `month` string COMMENT 'month=yyyy-MM', `day` string COMMENT 'day=yyyy-MM-dd') CLUSTERED BY ( vin) INTO 5 BUCKETS STORED AS PARQUET TBLPROPERTIES('parquet.compression'='SNAPPY');要是你的建表语句都记不得或者找不到了,那就没救了,收拾收拾包儿回家休息吧
-
现在就可以把原表数据的文件mv回到我们hive的数据文件位置了
-
sudo -u hdfs hdfs dfs -mv /user/root/.Trash/Current/user/hive/warehouse/hive_national_f4_engine_data/* /user/hive/warehouse/hive_national_f4_engine_data -
现在的数据已经到了hive的数据位置了
-
看下现在新建的表
-
hive> select * from hive_national_f4_engine_data; OK Time taken: 1.086 seconds hive> show partitions hive_national_f4_engine_data; OK Time taken: 0.33 seconds hive>现在是没有数据,也没有分区信息的,因为我们的hive表元数据还没有修复
-
最后一步了,修复表元数据
-
hive > MSCK REPAIR TABLE hive_national_f4_engine_data; -
查证一下
-
show partitions hive_national_f4_engine_data;
ok 了
更多推荐



所有评论(0)