pyspark java.lang.NoClassDefFoundError:/apache/log4j/spi/在SparkSubmit中过滤

dpiehjr4  于 2022-11-01  发布在  Spark
关注(0)|答案(2)|浏览(151)

我一直在尝试向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

我试着使用类似这样的语句:

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

但那也还是抛出错误。

与我的开发环境相关的一些注意事项:

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

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

iugsix8n

iugsix8n1#

我使用的是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>
hmae6n7t

hmae6n7t2#

下面一行对我很有效

libraryDependencies += "log4j" % "log4j" % "1.2.17"

相关问题