如何为hadoop流定义或解决此错误?

如何为hadoop流定义或解决此错误?,hadoop,hadoop-streaming,emr,amazon-emr,Hadoop,Hadoop Streaming,Emr,Amazon Emr,我在hadoop mr作业中遇到了一些错误,如何为hadoop流定义这个问题 Error: java.io.EOFException: Unexpected end of input stream at org.apache.hadoop.io.compress.DecompressorStream.decompress(DecompressorStream.java:145) at org.apache.hadoop.io.compress.DecompressorStream

我在hadoop mr作业中遇到了一些错误,如何为hadoop流定义这个问题

Error: java.io.EOFException: Unexpected end of input stream
    at org.apache.hadoop.io.compress.DecompressorStream.decompress(DecompressorStream.java:145)
    at org.apache.hadoop.io.compress.DecompressorStream.read(DecompressorStream.java:85)
    at java.io.InputStream.read(InputStream.java:101)
    at org.apache.hadoop.util.LineReader.fillBuffer(LineReader.java:180)
    at org.apache.hadoop.util.LineReader.readDefaultLine(LineReader.java:216)
    at org.apache.hadoop.util.LineReader.readLine(LineReader.java:174)
    at org.apache.hadoop.mapred.LineRecordReader.next(LineRecordReader.java:209)
    at org.apache.hadoop.mapred.LineRecordReader.next(LineRecordReader.java:47)
    at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.moveToNext(MapTask.java:199)
    at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.next(MapTask.java:185)
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:63)
    at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:432)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:175)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:170)

Error: java.io.EOFException: Unexpected end of input stream
    at org.apache.hadoop.io.compress.DecompressorStream.decompress(DecompressorStream.java:145)
    at org.apache.hadoop.io.compress.DecompressorStream.read(DecompressorStream.java:85)
    at java.io.InputStream.read(InputStream.java:101)
    at org.apache.hadoop.util.LineReader.fillBuffer(LineReader.java:180)
    at org.apache.hadoop.util.LineReader.readDefaultLine(LineReader.java:216)
    at org.apache.hadoop.util.LineReader.readLine(LineReader.java:174)
    at org.apache.hadoop.mapred.LineRecordReader.next(LineRecordReader.java:209)
    at org.apache.hadoop.mapred.LineRecordReader.next(LineRecordReader.java:47)
    at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.moveToNext(MapTask.java:199)
    at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.next(MapTask.java:185)
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:63)
    at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:432)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:175)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:170)

(不幸的是,我没有发布任何源代码的权限)

这些错误日志帮不了什么忙。由于您没有共享代码的权限,因此可以尝试以下步骤

  • 检查代码中使用的依赖库是否存在于hadoop集群的所有节点中。这是必需的,因为任务可以在任何工作节点中执行
  • 获取一个示例输入文件并在本地执行代码,然后将其作为mapreduce程序运行。您可以通过以下方式在本地执行它

    cat sampleinput | python mappercode.py


  • 我希望你能以某种方式解决这个问题。 但是,可能有一些空文件构成您正在查询的表或从中读取的目录/批处理的一部分


    运行检查以防止出现大小为0的文件将非常好。

    欢迎使用堆栈溢出!请发布您编写的代码,通常不可能在没有看到您的代码的情况下回答问题。很抱歉给您带来不便,但我没有任何权限打开我们的源代码。实际上我用option解决了这个问题-m mapred.max.map.failures.percent=1,我想知道如何处理映射程序中映射数据的损坏文件(.gzip)。是否有跳过已损坏文件的选项?谢谢你,Amal,但我想知道如何检查许多文件的有效性。(*.zip)hdfs中是否存在这些zip文件。是的,但有一些文件已损坏。例如,gzip文件的大小是13MB。但是,gzip文件中没有任何内容。我想知道如何在运行mr作业之前检查gzip文件的有效性。