在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的文件复制回去