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

更多推荐