Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

like image 616
waqas Avatar asked Jun 14 '26 14:06

waqas


2 Answers

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

like image 100
Neo Avatar answered Jun 17 '26 01:06

Neo


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

like image 39
waqas Avatar answered Jun 17 '26 00:06

waqas



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!