Apache Spark - 快速入门“java.lang.NoClassDefFoundError:scala/Serialized”

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

我正在尝试遵循本指南https://spark.apache.org/docs/latest/quick-start.html(scala)。但是,当我应该将 jar 文件提交到 Spark 时,我无法完成最后一步。

# Use spark-submit to run your application
$ YOUR_SPARK_HOME/bin/spark-submit \
  --class "SimpleApp" \
  --master local[4] \
  target/scala-2.12/simple-project_2.12-1.0.jar

我收到以下异常


Exception in thread "main" java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: scala/Serializable
        at SimpleApp$.main(SimpleApp.scala:9)
        at SimpleApp.main(SimpleApp.scala)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
        at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:958)
        at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:180)
        at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:203)
        at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:90)
        at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1046)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1055)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.NoClassDefFoundError: scala/Serializable
        ... 14 more
Caused by: java.lang.ClassNotFoundException: scala.Serializable
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 14 more

知道是什么原因造成的吗?

apache-spark
3个回答
2
投票

我发现问题了。我安装了错误的 Spark 版本。我下载了“Pre-built for Apache Hadoop 3.3 and later (scala 2.13)”版本。安装“Pre-built for Apache Hadoop 3.3 and later”spark 版本解决了问题。


0
投票

您需要将依赖项升级到与您的 Scala 版本二进制兼容的版本。 在这种情况下看起来像 2.12


0
投票

就我而言,我使用 scala 2.13 编译了代码,但我的测试基于 maven-surefire-plugin,它仍然是使用 scala 2.12 的旧版本。将 Surefire 插件版本更新到最新版本(在我的例子中是 4.9.2),因为它似乎是在 scala 2.13 上构建的。

© www.soinside.com 2019 - 2024. All rights reserved.