Spark中“不允许自我压制”的主要原因是什么?

S.K*_*ang 1 hdfs apache-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

我一直在寻找解决方案,但是找不到正确的解决方案,我也不知道为什么。

是什么导致这些错误,我该如何解决?

小智 5

该错误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出现了一些问题。

如果您查看集群中正在运行的服务,并检查所有datanode和daemon是否运行良好;事情可能会顺利进行。

问题可能是:

  1. 在datanode中发布。重新启动集群守护程序。
  2. 数据节点和名称节点之间的心跳:网络问题或权限访问问题。
  3. 数据节点的内存问题。
  4. 数据节点繁忙或无响应