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)
任何人都可以建议或指出问题,以及可能的解决方案吗?
答案 0 :(得分:3)
有同样的问题
项目中有两个依赖项,它们都有cassandra-driver-core
作为依赖项
spark-cassandra-connector_2.11-2.0.0-M3
&
job-server-api_2.10-0.8.0-SNAPSHOT
spark-cassandra-connecter由于其shading of guava
而期望ResultSet.fetchMoreResults
具有不同的返回类型
预计。 shade.com.datastax.spark.connector.google.common.util.concurrent.ListenableFuture
com.google.common.util.concurrent.ListenableFuture
答案 1 :(得分:2)
这是与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版本,它会被最近的版本覆盖。
恰好发生了从{PageIterable接口
继承的the latest source on Github does not show a implementation for fetchMoreResults如果你在Github上将Git版本回滚到3.0.x,你就会找到
public ListenableFuture<ResultSet> fetchMoreResults();
所以看起来最新的Cassandra核心车手冲出门不完整。或者我可能会遗漏一些东西。希望这会有所帮助。
TL;博士;删除最新的驱动程序并使用spark cassandra连接器中嵌入的驱动程序。
答案 2 :(得分:0)
通过从spark / jars /
中删除 cassandra-driver-core-3.1.0-shaded.jar 来解决问题主题java 重复类冲突问题?!
需要确认所有包含的罐子,如果有任何重复的罐子。
上面提到的解决方案只是个案之一。
答案 3 :(得分:0)
对于所有这些问题,请在命令下运行,并检查是否存在重叠的依赖项-
MVN依赖项:树