Spark java.io.EOFException:过早的 EOF:没有可用的长度前缀
Posted
技术标签:
【中文标题】Spark java.io.EOFException:过早的 EOF:没有可用的长度前缀【英文标题】:Spark java.io.EOFException: Premature EOF: no length prefix available 【发布时间】:2016-08-16 00:16:57 【问题描述】:我正在尝试读取 parquet 文件并对其执行一些操作并将结果保存为 HDFS 上的 parquet。我正在使用 Spark 进行操作。这样做时,我遇到了以下异常。
java.io.EOFException: Premature EOF: no length prefix available
at org.apache.hadoop.hdfs.protocolPB.PBHelper.vintPrefixed(PBHelper.java:2203)
at org.apache.hadoop.hdfs.protocol.datatransfer.PipelineAck.readFields(PipelineAck.java:176)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer$ResponseProcessor.run(DFSOutputStream.java:867)
任何关于可能是什么原因和解决方案的帮助。
使用 CDH 5.4.1
【问题讨论】:
向我们展示你到目前为止所做的尝试...... 尝试使用合并来减少写入时的分区数。如果它不起作用,也许你可以发布你的代码来帮助调试。 没有足够的背景信息或故障排除步骤。 投票结束,但也发布了一个通用答案,这可能与给定信息一样好。 【参考方案1】:Premature EOF 代表文件过早结束。
没有发布代码,所以我无法提供更具体的解决方案,但有两种可能会出现此错误:
-
如果您使用的库仍然是新的/有些未经测试,您可能会发现它在某些极端情况下存在问题
然而,更有可能的是您在代码中犯了错误。这可能像语法错误一样简单,但也可能更微妙,例如以错误的方式调用某些东西。
【讨论】:
以上是关于Spark java.io.EOFException:过早的 EOF:没有可用的长度前缀的主要内容,如果未能解决你的问题,请参考以下文章