当 spark 使用 saveAsTextFile 将大文件写入 HDFS 时,出现错误:java.lang.IllegalArgumentException: Self-suppression not permitted at java.lang.Throwable.addSuppressed(Throwable.java:1043)Caused by: java.io.IOException: All datanodes DatanodeInfoWithStorage
我已经寻找了解决方案,但我没有找到正确的解决方案,我不知道为什么。

是什么导致了这些错误,我该如何修复它们?

最佳答案

错误 self-suppression not permitted 不是这里的实际错误。

当运行时尝试从代码中抛出多个 THROWABLE 实例时,JVM 会抛出此错误。

为此,JDK-7 向 Throwable 引入了“suppressedExceptions”以抑制先前的异常并保留最近的异常。

所以 Java 尝试 - throwable.addSuppressed(throwable) - 这是无效的并且 Throwable 实例本身抛出 IllegalArgumentException 并且真正的异常以这种方式丢失。

从日志中的这个: Caused by: java.io.IOException: All datanodes DatanodeInfoWithStorag 看来,datanode 存在一些问题。

如果您查看集群中正在运行的服务,并检查所有数据节点和守护进程是否运行良好;事情可能会走上正轨。

问题可能是:

  • 数据节点中的问题。重新启动集群守护进程。
  • datanodes 和 namenode 之间的心跳:网络问题或权限访问问题。
  • 数据节点的内存问题。
  • 数据节点忙或无响应
  • 关于apache-spark - Spark中 "self-suppression not permitted"的主要原因是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44490579/

    10-12 23:48