我试图运行Norstadt先生在以下链接http://www.norstad.org/matrix-multiply/index.html下提出的矩阵乘法示例。我可以用hadoop 0.20.2成功运行它,但我尝试用hadoop 1.0.3运行它,但是我得到了跟随错误。是我的hadoop配置的问题还是代码中的兼容性问题,这是由作者在hadoop 0.20中编写的。另外请指导我如何在这两种情况下修复此错误。这是我得到的错误。
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)
提前致谢
此致 waqas
答案 0 :(得分:5)
我也遇到了同样的问题,在我的情况下它是异常,因为我还没有关闭SequenceFile.Writer
对象。当我在代码中添加sequenceFileWriter.close()
语句时问题得到解决。
如果 MapReduce 程序中的输入是某些先前MapReduce程序的输出,那么您必须显式编写代码以忽略_SUCCESS
文件。
PS:我正在使用CHD4 Cloudera Hadoop配置
答案 1 :(得分:2)
我做对了。事实上,它没有自动过滤_SUCCESS文件,并且由于读取了这个日志文件中出现的异常问题。我过滤了文件,现在工作正常。以下是我如何过滤文件Filter log files(_success and _log) in FileSystem.liststatus
的链接