正常分區 PRovince_id=125 動態分區時產生的錯誤分區(因為有特殊字符,不能直接用hive語句刪除) province_id=%2Ffile.cdn.mvideo.xiaomi.com%2Fmobilevideo%2F10001%2F1%2F1d1f7ca81b61a497c1b216b0753dc345.apk
解決方法
1 進入hive使用的MySQL 2 切換為hive數據庫
mysql> use hive;3 查詢相關表
mysql> SELECT * FROM TBLS WHERE TBL_NAME='o_cu_pm_userdev_url';結果  發現出現兩條記錄,因為表名有相同的,所以使用TBLS表的SD_ID字段去SDS表查詢LOCATION字段的值,通過LOCATION字段,就可以知道o_cu_pm_userdev_url這張表的數據庫,TBLS中TBL_ID為70的這行記錄就是我要查詢的表的ID
 發現出現兩條記錄,因為表名有相同的,所以使用TBLS表的SD_ID字段去SDS表查詢LOCATION字段的值,通過LOCATION字段,就可以知道o_cu_pm_userdev_url這張表的數據庫,TBLS中TBL_ID為70的這行記錄就是我要查詢的表的ID

接下來,要根據TBLS表的TBL_ID和hive表分區字段的值(模糊查詢)去PARTITIONS表查詢,需要得到PARTITIONS表的PART_ID的值(202354)
mysql> select * from PARTITIONS t where t.tbl_id=70 and PART_NAME like '%cdn.mvideo.xiaomi.com%';結果 
最后,通過TBLS表的TBL_ID(70)和PARTITIONS表的PART_ID(202354)就可以刪除hive的分區了
mysql> delete from PARTITION_KEY_VALS where part_id=202354;Query OK, 6 rows affected (0.01 sec)mysql> delete from PARTITION_PARAMS where part_id=202354;Query OK, 6 rows affected (0.00 sec)mysql> delete from PARTITIONS where tbl_id=70 and part_id=202354;Query OK, 1 row affected (0.01 sec)4 刪除HDFS上分區對應的目錄【Hive外部表需要此操作】(目錄要用雙引號括起來,因為目錄里有特殊字符)
hdfs dfs -rm -r "/user/hive/bigdata/o_cu_pm_userdev_urlprovince_id=%2Ffile.cdn.mvideo.xiaomi.com%2Fmobilevideo%2F10001%2F1%2F1d1f7ca81b61a497c1b216b0753dc345.apk"新聞熱點
疑難解答