将 apache Spark 核心从 3.3.2 升级到 >=3.4.4 会导致日志记录中出现 stackoverflowerror

问题描述 投票:0回答:1

我有一个带有嵌入式 Spark 库的应用程序。使用 Spark-Core v3.3.2 一切正常。 升级到 >= 3.4.4 后,获取 SparkSession 会导致 slf4j 内出现 stackoverflow 异常。

我尝试找出更改的内容并尝试重新配置日志记录,但没有任何效果。

    Caused by: java.lang.StackOverflowError
        at java.base/java.time.Clock$SystemClock.instant(Clock.java:529)
        at java.base/java.time.Instant.now(Instant.java:273)
        at java.logging/java.util.logging.LogRecord.<init>(LogRecord.java:229)
        at org.slf4j.impl.JDK14LoggerAdapter.log(JDK14LoggerAdapter.java:576)
        at org.slf4j.impl.JDK14LoggerAdapter.log(JDK14LoggerAdapter.java:632)
        at org.slf4j.bridge.SLF4JBridgeHandler.callLocationAwareLogger(SLF4JBridgeHandler.java:232)
        at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:313)
        at java.logging/java.util.logging.Logger.log(Logger.java:979)
        at org.slf4j.impl.JDK14LoggerAdapter.log(JDK14LoggerAdapter.java:582)
        at org.slf4j.impl.JDK14LoggerAdapter.log(JDK14LoggerAdapter.java:632)
        at org.slf4j.bridge.SLF4JBridgeHandler.callLocationAwareLogger(SLF4JBridgeHandler.java:232)

有什么建议吗?

我尝试过切换 sl4j-nop 和 slf4j-simple 配置。 我尝试过使用 Spark 3.5.4。 我尝试过切换日志记录级别

没有任何帮助

apache-spark
1个回答
0
投票

检查 SLF4J 绑定:

  • 由于您已经尝试了不同的 SLF4J 配置,例如 slf4j-nop 和 slf4j-simple,请仔细检查您的类路径中是否没有其他冲突的 SLF4J 绑定。有时,拥有多个版本的 SLF4J 相关库可能会导致意外行为。从应用程序的依赖项中删除任何不必要或重复的 SLF4J jar。 确保 SLF4JBridgeHandler 配置正确。错误堆栈显示它可能涉及递归调用。回顾一下如何在 Java 的 java.util.logging 和 SLF4J 之间建立桥梁。

查看日志记录级别和配置文件:

  • 尽管您已尝试切换日志记录级别,但请确保所有日志记录配置文件(例如 log4j.properties 或 logback.xml 如果适用)一致并且没有配置错误。不正确的日志记录级别设置或过于详细的日志记录配置有时会引发此类问题。尝试将日志配置简化到最低限度,并逐渐添加回功能以查看问题是否仍然存在。
© www.soinside.com 2019 - 2024. All rights reserved.