Cassandra连接器Apache Spark:本地类不兼容

5

我正在尝试使用Cassandra Spark连接器将RDD与Cassandra表进行连接:

samplerdd.joinWithCassandraTable(keyspace, CassandraParams.table)
      .on(SomeColumns(t.date as a.date,
        t.key as a.key)

在单机模式下可以正常工作,但在集群模式下执行时出现以下错误:

Job aborted due to stage failure: Task 6 in stage 0.0 failed 4 times, most recent failure: Lost task 6.3 in stage 0.0 (TID 20, 10.10.10.51): java.io.InvalidClassException: com.datastax.spark.connector.rdd.CassandraJoinRDD; local class incompatible: stream classdesc serialVersionUID = 6155891939893411978, local class serialVersionUID = 1245204129865863681

我已经检查了主节点和从节点的jar包,看起来版本是一样的。

我正在使用Spark 2.0.0,Cassandra 3.7,Cassandra-Spark连接器2.0.0 M2,Cassandra驱动程序核心3.1.0和Scala 2.11.8。

可能出现了什么问题?


2
你的某个依赖版本不匹配。请查找它。 - maasg
1
你提到了“我已经检查了主节点和从节点中的JAR包”。你不应该在从节点上放置JAR包。相反,使用spark-submit --jars <deps...>来提交你的作业。请参阅http://spark.apache.org/docs/latest/submitting-applications.html#advanced-dependency-management。 - maasg
1
那也应该可以(我也是这样做的)。检查从节点是否有 spark.cassandra.connector jar 的本地副本。 - maasg
我已经检查过,在每个从节点的spark/jars目录下都存在这个jar包。 - Manuel Valero
2
它不应该存在于任何从节点中。让驱动程序处理分发正确的JAR包。 - maasg
显示剩余2条评论
1个回答

1
最终解决。将cassandra-driver-core依赖更新到3.0.0,问题已解决。- Manuel Valero刚刚进行了编辑。

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