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

2022-09-03 07:15:01

我开始测试火花。我在本地计算机上安装了 spark,并使用单个工作线程运行本地群集。当我尝试通过设置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

答案 1

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

  • Hadoop版本;
  • 火花版;
  • Scala版本;
  • ...

对我来说,它的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,从而导致这种情况。希望它能帮助你!


答案 2

使用下面的版本组合即可完成所有工作

已安装的火花 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>

推荐