本地类不兼容异常:在从IDE运行Spark Standalone时。

17

我开始测试Spark。 我在本地机器上安装了Spark,并使用单个worker运行本地集群。当我尝试通过以下方式设置sparconf并从我的IDE执行作业时:

final SparkConf conf = new SparkConf().setAppName("testSparkfromJava").setMaster("spark://XXXXXXXXXX:7077");
final JavaSparkContext sc = new JavaSparkContext(conf);
final JavaRDD<String> distFile = sc.textFile(Paths.get("").toAbsolutePath().toString() + "dataSpark/datastores.json");*

我遇到了这个异常:

java.lang.RuntimeException: java.io.InvalidClassException: org.apache.spark.rpc.netty.RequestMessage; local class incompatible: stream classdesc serialVersionUID = -5447855329526097695, local class serialVersionUID = -2221986757032131007
5个回答

6
可能有多个不兼容的原因,如下所示:
  • Hadoop版本;
  • Spark版本;
  • Scala版本;
  • ...
对我来说,是Scala版本,我在我的IDE中使用2.11.X,但官方文档说:

Spark 运行于 Java 7+、Python 2.6+ 和 R 3.1+。对于 Scala API,Spark 1.6.1 使用 Scala 2.10。您需要使用兼容的 Scala 版本(2.10.x)。

而文档中的 x 告诉我们,如果您使用最新的 Java(1.8),不能小于 3,因为 这个原因。希望这能帮到您!


可以确认!在我的情况下,我必须将我的Hadoop版本更新到3.2.2和Spark更新到3.1.1,然后一切都正常工作! - Genarito

6

我已经将以下版本进行了组合,使其能够正常工作

安装了Spark 1.6.2

使用bin/spark-submit --version进行验证

<dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.10</artifactId>
            <version>1.6.2</version>
</dependency>

Scala 2.10.6和Java 8。

请注意,它不起作用,并且与以下版本存在类不兼容的问题:

Scala 2.11.8和Java 8

<dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>1.6.2</version>
</dependency>

5

看起来你安装的Spark版本与IDE中使用的Spark版本不同。

如果你正在使用maven,只需比较在pom.xml中声明的依赖版本和bin/spark-submit --version输出的版本,确保它们相同即可。


是的,我已经检查了版本。两者都是2.6.0。问题可能仍然存在于Scala版本中。Spark下载页面上构建的二进制版本是使用Scala2.10构建的。我正在调查中... - Nesrine Ben mustapha
1
2.6.0 还是 1.6.0?所以你正在使用 Scala 2.11 吗?如果你不想自己构建 Spark,切换到 2.10 是最简单的方法。 - zsxwing
抱歉,是的,我指的是1.6.0版本。是的,我切换到了2.10版本,它绝对更好。谢谢。 - Nesrine Ben mustapha

0

我遇到了这个问题,因为Spark jar依赖项是2.1.0,但安装的Spark Engine版本是2.0.0,因此版本不匹配,所以会抛出此异常。

这个问题的根本原因是项目中Spark jar依赖项与执行Spark作业的安装Spark Engine版本不匹配。

因此,请验证两个版本并使它们相同。

例如,Spark-core Jar版本2.1.0和Spark Computation Engine版本必须为:2.1.0

Spark-core Jar版本2.0.0和Spark Computation Engine版本必须为:2.0.0

对我来说完美地解决了这个问题。


0
我遇到了这个问题。
当我使用 spark-submit 运行代码时,它能够正常工作(而不是在 IDE 中运行)。
 ./bin/spark-submit --master spark://HOST:PORT target/APP-NAME.jar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接