waqas
waqas

Reputation: 1125

EOFException at org.apache.hadoop.io.SequenceFile$Reader.init(SequenceFile.java:1508)

I was trying to run a matrix multiplication example presented by Mr. Norstadt under following link http://www.norstad.org/matrix-multiply/index.html. I can run it successfully with hadoop 0.20.2 but I tried to run it with hadoop 1.0.3 but I am getting following error. Is it the problem with my hadoop configuration or it is compatibility problem in the code which was written in hadoop 0.20 by author.Also please guide me that how can I fix this error in either case. Here is the error I am getting.

in thread "main" java.io.EOFException
        at java.io.DataInputStream.readFully(DataInputStream.java:180)
        at java.io.DataInputStream.readFully(DataInputStream.java:152)
        at org.apache.hadoop.io.SequenceFile$Reader.init(SequenceFile.java:1508)
        at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1486)
        at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1475)
        at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1470)
        at TestMatrixMultiply.fillMatrix(TestMatrixMultiply.java:60)
        at TestMatrixMultiply.readMatrix(TestMatrixMultiply.java:87)
        at TestMatrixMultiply.checkAnswer(TestMatrixMultiply.java:112)
        at TestMatrixMultiply.runOneTest(TestMatrixMultiply.java:150)
        at TestMatrixMultiply.testRandom(TestMatrixMultiply.java:278)
        at TestMatrixMultiply.main(TestMatrixMultiply.java:308)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:156)

Thanks in advance

Regards, waqas

Upvotes: 3

Views: 4205

Answers (2)

Neo
Neo

Reputation: 79

I also encountered same problem, in my case it was giving exception because I haven't closed SequenceFile.Writer object. Problem got resolved when I added sequenceFileWriter.close() statement in my code.

Also if input in MapReduce program is output of some previous MapReduce program then you have to explicitly write code to ignore _SUCCESS file.

PS: I am using CHD4 Cloudera Hadoop configuration

Upvotes: 5

waqas
waqas

Reputation: 1125

I got it right. Infact it was not filtering _SUCCESS file automatically and due to reading this log file exception mentioned in the question was occuring. I filtered the files and now its working fine. Here is the link how I filtered the files Filter log files(_success and _log) in FileSystem.liststatus

Upvotes: 2

Related Questions