hive分區與實際分區文件不匹配致使spark讀文件出錯的問題解決

先解釋下,因爲歷史緣由致使hive中的看到分區比hdfs中的文件夾不匹配,存在hive中分區數有,實際hdfs中無此文件夾。apache

spark中經過sparkSQL讀取hive中的該表時,將會出現異常。oop

解決方案:spa

1. 檢查該表是不是外部表,若是不是,將屬性修改成外部表屬性。code

這裏修改成外部表,目的是在刪除分區時,不會將已有的數據刪除。必要時,先作好備份處理。blog

alter table tablename set tblproperties('EXTERNAL'='TRUE');

2. 刪除異常分區hadoop

這裏嘗試過經過drop table方式來刪除表,可是發現會報錯。it

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Invalid partition key & values; keys [year, month, day, hour, ], values [2018, ])

因此這裏使用了刪除分區。spark

alter table tablename drop partition(pk_year=2018);

3.使用分區修復命令從新建立分區io

msck repair table tablename;
相關文章
相關標籤/搜索