我正在尝试运行基本上在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。
答案 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,这是本文的最新版本。