Java:HDFS文件抛出EOFException

时间:2018-09-07 17:42:25

标签: java hadoop hdfs

在数据管道中,Spark作业将序列文件转换为镶木地板文件。原始序列文件由KafkaConnect编写,该文件正在从kafka主题中读取数据。
只有很少的文件(每天2-3个文件)无法读取火花作业。抛出

java.io.EOFException
    at java.io.DataInputStream.readFully(DataInputStream.java:197)
    at org.apache.hadoop.io.DataOutputBuffer$Buffer.write(DataOutputBuffer.java:70)
    at org.apache.hadoop.io.DataOutputBuffer.write(DataOutputBuffer.java:120)
    at org.apache.hadoop.io.SequenceFile$Reader.next(SequenceFile.java:2446)
    at org.apache.hadoop.io.SequenceFile$Reader.next(SequenceFile.java:2578)

我可以使用以下java方法复制相同的错误:

reader = new SequenceFile.Reader(new Configuration(), 
SequenceFile.Reader.file(input));
      LongWritable key = new LongWritable();
      Text val = new Text();
      while (reader.next(key, val)) {
      }
reader.close();

问题是我能够从hdfs命令正确读取损坏的文件: hdfs dfs -text <file> | text 但是为什么它会从Java代码中引发异常?

0 个答案:

没有答案