hdfs读取文件出发java.io.EOFException异常

[2014-05-05 17:42:51] [main] DEBUG - Error making BlockReader. Closing stale NioInetPeer(Socket[addr=/XXXXX,port=50010,localport=55897]) 

java.io.EOFException: Premature EOF: no length prefix available

at org.apache.hadoop.hdfs.protocol.HdfsProtoUtil.vintPrefixed(HdfsProtoUtil.java:171)

at org.apache.hadoop.hdfs.RemoteBlockReader2.newBlockReader(RemoteBlockReader2.java:383)

at org.apache.hadoop.hdfs.BlockReaderFactory.newBlockReader(BlockReaderFactory.java:136)

at org.apache.hadoop.hdfs.DFSInputStream.getBlockReader(DFSInputStream.java:993)

at org.apache.hadoop.hdfs.DFSInputStream.blockSeekTo(DFSInputStream.java:471)

at org.apache.hadoop.hdfs.DFSInputStream.readWithStrategy(DFSInputStream.java:662)

at org.apache.hadoop.hdfs.DFSInputStream.read(DFSInputStream.java:706)

at java.io.DataInputStream.read(DataInputStream.java:132)

at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)

at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)

at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)

at java.io.InputStreamReader.read(InputStreamReader.java:167)

at java.io.BufferedReader.fill(BufferedReader.java:136)

at java.io.BufferedReader.readLine(BufferedReader.java:299)

at java.io.BufferedReader.readLine(BufferedReader.java:362)

 

	FSDataInputStream is = fs.open(fileStatus.getPath());

	BufferedReader br = new BufferedReader(
								new InputStreamReader(is));

	String line = null;
	while ((line = br.readLine()) != null) {XXXX;//这一行出异常
}

 

虽然,不影响结果,但不知为啥直接操作hdfs,不同于普通文件reader会有这个异常。

 

代码异常处:

 public static InputStream vintPrefixed(final InputStream input)

  throws IOException {

    final int firstByte = input.read();

    if (firstByte == -1) {

      throw new EOFException("Premature EOF: no length prefix available");

    }

猜你喜欢

转载自lvdccyb.iteye.com/blog/2061760