Apache spark 发生了什么-NoSuchMethodError:com.datastax.driver.core.ResultSet.fetchMoreResults

Apache spark 发生了什么-NoSuchMethodError:com.datastax.driver.core.ResultSet.fetchMoreResults,apache-spark,spark-cassandra-connector,Apache Spark,Spark Cassandra Connector,cassandra-connector-assembly-2.0.0根据github项目构建 使用Scala 2.11.8,cassandra-driver-core-3.1.0 sc.cassandraTable("mykeyspace", "mytable").select("something").where("key=?", key).mapPartitions(par => { par.map({ row => (row.getString("something")

cassandra-connector-assembly-2.0.0
根据
github
项目构建

使用
Scala 2.11.8
cassandra-driver-core-3.1.0

sc.cassandraTable("mykeyspace", "mytable").select("something").where("key=?", key).mapPartitions(par => {
    par.map({ row => (row.getString("something"), 1 ) })
})
.reduceByKey(_ + _).collect().foreach(println)
同样的工作对于读取更少的海量数据也很有效

java.lang.NoSuchMethodError: com.datastax.driver.core.ResultSet.fetchMoreResults()Lshade/com/datastax/spark/connector/google/common/util/concurrent/ListenableFuture;
    at com.datastax.spark.connector.rdd.reader.PrefetchingResultSetIterator.maybePrefetch(PrefetchingResultSetIterator.scala:26)
    at com.datastax.spark.connector.rdd.reader.PrefetchingResultSetIterator.next(PrefetchingResultSetIterator.scala:39)
    at com.datastax.spark.connector.rdd.reader.PrefetchingResultSetIterator.next(PrefetchingResultSetIterator.scala:17)
    at scala.collection.Iterator$$anon$11.next(Iterator.scala:409)
    at scala.collection.Iterator$$anon$11.next(Iterator.scala:409)
    at scala.collection.Iterator$$anon$12.next(Iterator.scala:444)
    at com.datastax.spark.connector.util.CountingIterator.next(CountingIterator.scala:16)
    at scala.collection.Iterator$$anon$11.next(Iterator.scala:409)
    at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:194)
    at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:63)
    at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:79)
    at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:47)
    at org.apache.spark.scheduler.Task.run(Task.scala:85)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:274)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

是否有人可以建议或指出该问题,以及可能的解决方案?

从spark/jars中删除cassandra-driver-core-3.1.0-shaded.jar即可解决该问题/

一个热门的java重复类冲突问题

如果有任何重复的罐子,需要确认包括的所有罐子


上面提到的解决方案只是其中一种情况。

它与Cassandra驱动程序核心冲突

libraryDependencies += "com.datastax.spark" % "spark-cassandra-connector_2.11" % "2.0.0-M3"
带来了

如果进入~/.ivy2/cache/com.datastax.spark/spark-cassandra-connector_2.11,您会发现一个名为ivy-2.0.0-M3.xml的文件

在该文件中,依赖项是

com.datastax.cassandra" name="cassandra-driver-core" rev="3.0.2" force="true" 
请注意,这是Cassandra驱动程序核心的3.0.2版本,它被较新版本超越

恰好是从接口PagingIterable继承的

如果在Github上将Git版本回滚到3.0.x,您将发现

 public ListenableFuture<ResultSet> fetchMoreResults();
public ListenableFuture fetchMoreResults();
因此,看起来最新的卡桑德拉核心驱动程序被不完整地冲出了大门。或者我可能错过了什么。希望这有帮助

tl;博士卸下最新的驱动程序,使用spark cassandra连接器中嵌入的驱动程序。

也有同样的问题

该项目中有两个依赖项,它们都以
cassandra驱动程序核心
作为依赖项

spark-cassandra-connector_2.11-2.0.0-M3
&
job-server-api_2.10-0.8.0-SNAPSHOT

spark cassandra connecter由于其

预料之中
shade.com.datastax.spark.connector.google.common.util.concurrent.ListenableFuture

找到了。
com.google.common.util.concurrent.ListenableFuture


切换到以更正问题

对于所有这些问题,请在下面运行命令并检查是否存在任何重叠依赖项-


mvn dependency:tree

您是否了解有关解决方案的更多详细信息?我在任何地方都看不到cassandra-driver-core-3.1.0-shaded.jar。spark-cassandra-connector_2.11-2.0.0-M3包含core版本1中的ResultSet类,这显然会导致错误。我删除了libraryDependencies+=“com.datasax.cassandra”%“cassandra驱动程序core”%“3.1.2”从这个项目和任何内置的cassandra驱动核心Spark都可以作为cassandra驱动程序在我项目的其余部分工作,并解决fetchMoreResults问题。我也找不到Spark在哪里有这个Cassandra Core jar,它不在jars/目录中。最好的答案!救命恩人!我也很想找到解决办法。谢谢