本文删除的是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 了



