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/目录中。最好的答案!救命恩人!我也很想找到解决办法。谢谢