使用spark submit运行spark作业时出现InvalidClassException

时间:2017-07-21 12:17:57

标签: apache-spark cassandra spark-cassandra-connector

我正在尝试运行基本上在cassandra表中加载数据的spark作业。 但它给出了以下错误。

  

java.io.InvalidClassException:   com.datastax.spark.connector.rdd.CassandraRDD;当地班级   不兼容:stream classdesc serialVersionUID = 8438672869923844256,   本地类serialVersionUID = -8421059671969407806

我有三个火花节点,我使用以下脚本来运行它。

  

spark-submit --class test.testchannels --master spark:// ubuntu:7077   --deploy-mode client --jars /home/user/BigData/jars/spark-cassandra-connector_2.11-2.0.0-RC1.jar,/home/user/BigData/jars/spark-cassandra-connector-java_2 .10-1.6.0-M1.jar   /home/user/BigData/SparkJobs/testchannelsparksubmit.jar   /home/user/Data/channel_30Jun2017.csv

此外,我还在同一路径上复制了工作节点上与cassandra相关的jar。

1 个答案:

答案 0 :(得分:1)

您的群集中有SCC的混合版本。罐子本地有一个CassandraRDD定义,而远程罐子有不同的版本。强烈建议您将复制罐复制到spark worker目录中,因为很容易犯这种错误。使用--packages命令并允许spark分配您的资源要简单得多。

/home/user/BigData/jars/spark-cassandra-connector_2.11-2.0.0-RC1.jar,/home/user/BigData/jars/spark-cassandra-connector-java_2.10-1.6.0-M1.jar

很可能是罪魁祸首,因为你不仅要结合2个不同版本的连接器,它们也是两个不同版本的Spark。 1.6.0之后的所有" java"模块被合并到核心模块中,因此不需要-java工件。另外,RC1不是连接器的发布版本(Release Candidate 1),你应该使用的是2.0.2,这是本文的最新版本。