java.lang.NoClassDefFoundError:SparkSubmit 中的 org/apache/log4j/spi/Filter

Yos*_*aya 10 conda apache-spark pyspark

我一直在尝试向 Kubernetes 提交应用程序。我已经按照https://spark.apache.org/docs/latest/running-on-kubernetes.html中的教程进行操作,例如构建 Spark 图像等。

但每当我尝试运行该命令时spark-submit,pod 总是抛出错误。这是来自命令的日志kubectl logs <spark-driver-pods>::

Error: Unable to initialize main class org.apache.spark.deploy.SparkSubmit
Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/spi/Filter
Run Code Online (Sandbox Code Playgroud)

我尝试过使用类似的东西:

spark-submit
  ...
  --jars $(echo /opt/homebrew/Caskroom/miniforge/base/lib/python3.9/site-packages/pyspark/jars/*.jar | tr ' ' ',')
  ...
Run Code Online (Sandbox Code Playgroud)

但这仍然会引发错误。

一些与我的开发环境相关的注释:

  • 我使用 Docker 桌面内置的 Kubernetes
  • 我在conda环境中使用pyspark,是的,我已经激活了环境。这就是为什么我可以pyspark在终端中使用。

我还应该做些什么吗?或者忘记做什么?

Chr*_*ong 0

我正在使用 Maven,但在从 log4j 1.x 迁移到 log4j 2.x 时遇到了此错误,并意识到我仍然有一些仅适用于 1.x 的代码。我没有重构代码,而是将此依赖项添加到我的 pom.xml 中以保持兼容性。

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-1.2-api</artifactId>
    <version>2.17.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)