hive報錯:Failed with exception java.io.IOException: rename for src path:


在hive中,會有這樣一種情形:

1、創建一個分區外部表A(比如A表有5個字段),並且向A表里指定的分區(比如20160928這個分區)里插入數據

2、發現A表缺少一些字段,因為存在元數據不實時更新的問題,不想更新元數據,就進行刪表重新建表B(表B與表A除了多了幾個字段外,別的都一樣)

3、再執行hql腳本,把最新的字段樣式的數據插入到20160928這個分區里

會出現如下的報錯:

Failed with exception java.io.IOException: rename for src path: hdfs://bdc/are_wek/date=20160928/.hive-staging_hive_xxxxxx-1/-ext-10000/000000_0 to dest path:hdfs://bdc/are_wek/date=20160928/000000_0 returned false
FAILED: Execution Error, return code 1 from
 org.apache.hadoop.hive.ql.exec.MoveTask. java.io.IOException: 
rename for src path: hdfs://bdc/are_wek/date=20160928/.hive-staging_hive_xxxxxxx-1/-ext-10000/000000_0 to dest path:hdfs://bdc/are_wek/date=20160928/000000_0 
returned false

這個錯誤是指hadoop在把hql執行結果從臨時文件挪到對應的表所在的目錄時出錯;

出現這個問題的原因是:

1、我只是drop了表,其實只是刪除了表的元數據,但是表對應的數據文件依然還在hdfs上;

2、hive在把臨時文件挪移到正式目錄時,會先對hdfs上的文件做一個判斷,如果文件夾不存在那就創建,如果存在那就直接把文件挪移過去,這樣就等於把臨時文件夾里的000000_0文件挪到正式目錄下,這時候正式目錄已經有了一個叫000000_0的文件,所以就會報如上的錯誤

解決辦法:

hadoop fs -rmr /bdc/are_wek/date=20160928/*

把對應的數據文件刪除即可

感謝:http://blog.sina.com.cn/s/blog_b82e70870102x3oz.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM