本地类不兼容异常:从IDE运行spark standalone时

Nes*_*pha 12 java apache-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");*
Run Code Online (Sandbox Code Playgroud)

我有这个例外:

java.lang.RuntimeException: java.io.InvalidClassException: org.apache.spark.rpc.netty.RequestMessage; local class incompatible: stream classdesc serialVersionUID = -5447855329526097695, local class serialVersionUID = -2221986757032131007
Run Code Online (Sandbox Code Playgroud)

zsx*_*ing 5

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

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


小智 5

可能是以下多种不兼容的原因:

  • Hadoop版本;
  • 火花版;
  • 斯卡拉版本;
  • ...

对我来说,它的 Scala 版本,我在我的 IDE 中使用2.11.X但官方文档说:

Spark runs on Java 7+, Python 2.6+ and R 3.1+. For the Scala API, Spark 1.6.1 uses Scala 2.10. You will need to use a compatible Scala version (2.10.x).

如果您使用最新的 Java(1.8),则文档中的 x不能小于 3,导致. 希望它会帮助你!


use*_*158 5

全部使用以下组合版本

安装火花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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)