当前位置:首页 > 服务器技术 > apache

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

我试图运行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

解决方法:

我也遇到了同样的问题,在我的情况下它给出了异常,因为我还没有关闭SequenceFile.Writer对象.在我的代码中添加了sequenceFileWriter.close()语句时,问题得到了解决.

此外,如果MapReduce程序中的输入是某些先前MapReduce程序的输出,那么您必须显式编写代码以忽略_SUCCESS文件.

PS:我正在使用CHD4 Cloudera Hadoop配置


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!