在Flume NG+hadoop的開發中,運行mapreduce的時候出現異常Error: java.io.IOException: Cannot obtain block length for LocatedBlock{BP-235416765-192.168.30.244-1430221967536:blk_1073889944_149172; getBlockSize()=45839; corrupt=false; offset=0; locs=[10.188.10.98:50010, 10.188.10.95:50010, 10.188.10.245:50010]},我們通過fsck命令發現當前文件處於正在寫的過程中,而且文件內容為空。截圖如下:
所以在我們獲取數據的時候,直接導致出現異常。那么針對這種情況,我的想法是:第一種方案立即將這個文件寫出到磁盤上去,第二種將這個文件刪除。
但是第一種解決方案我現在也不知道怎么弄,所以在這里我直接選擇刪除hadoop dfs -rm xxxxx即可
采用保留部分數據:
1. 先cp到一個hdfs的目錄中
2. 再刪除原本的那個文件
3. 在將copy的文件復制回去