2016-08-19 110 views
2

cassandra-connector-assembly-2.0.0github项目构建。发生了什么 - NoSuchMethodError:com.datastax.driver.core.ResultSet.fetchMoreResults

Scala 2.11.8cassandra-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

嗯,我删除libraryDependencies + =“com.datastax.cassandra”%“卡桑德拉司机核”从项目和任何%“3.1.2”建-in cassandra驱动程序核心Spark已嵌入其中,作为Cassandra驱动程序可用于我的其余项目并解决fetchMoreResults问题。我也找不到Spark有这个Cassandra Core jar的地方,它不在jar /目录中。 –

回答

2

它与卡桑德拉驱动程序内核,

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

带来的冲突。

如果你去到〜/ .ivy2 /缓存/ com.datastax.spark /火花卡桑德拉-connector_2.11你会发现一个名为常春藤2.0.0 M3.xml

在该文件的依赖文件

com.datastax.cassandra" name="cassandra-driver-core" rev="3.0.2" force="true" 

请注意,它是Cassandra驱动程序核心的3.0.2版本,它被最近的一个超出。

它碰巧的是,这是从界面PagingIterable

如果回滚Git版本到3.0.x的Github上继承the latest source on Github does not show a implementation for fetchMoreResults,你会发现

public ListenableFuture<ResultSet> fetchMoreResults(); 

所以它看起来像最新的卡桑德拉核心车手冲出门外不完整。或者我可能会错过一些东西。希望这可以帮助。

tl; dr;移除最新的驱动程序并使用spark cassandra连接器中嵌入的驱动程序。

+0

谢谢你这个非常丰富的调查。 –

0

问题是通过从火花/罐卡桑德拉驱动器芯-3.1.0-shaded.jar解析/

局部的java 复制类相冲突问题?

需要确认包含的所有罐子,如果有任何重复罐子参与。

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

+0

你有关于分辨率的更多细节吗?我没有在任何地方看到cassandra-driver-core-3.1.0-shaded.jar。 spark-cassandra-connector_2.11-2.0.0-M3在内核的版本1中包含一个ResultSet类,这显然会导致错误。 – Adrian

2

有同样的问题

有项目其中两个有cassandra-driver-core作为一个依赖

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

火花卡桑德拉 - 连接器预计ResultSet.fetchMoreResults有不同的返回两个依赖类型,由于其shading of guava

预计。shade.com.datastax.spark.connector.google.common.util.concurrent.ListenableFuture

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

切换到unshaded version of cassandra-connector纠正问题

+0

最佳答案!救命稻草! – Dmitry1405