【发布时间】:2016-09-14 23:22:06
【问题描述】:
在尝试将数据保存到 Cassandra(在 Scala 中)时,出现以下异常:
java.lang.ClassCastException: com.datastax.driver.core.DefaultResultSetFuture 无法转换为 com.google.common.util.concurrent.ListenableFuture
请注意,我并非每次都收到此错误,但它偶尔会随机出现,这使得它在生产中更加危险。
我正在使用 YARN,并且已对 com.google.** 进行了着色以避免 Guava 符号冲突。
这里是sn-p的代码:
rdd.saveToCassandra(keyspace,"movie_attributes", SomeColumns("movie_id","movie_title","genre"))
任何帮助将不胜感激。
更新 根据要求从 pom 文件中添加详细信息:
<dependency>
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector_2.10</artifactId>
<version>1.5.0</version>
</dependency>
<dependency>
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector-java_2.10</artifactId>
<version>1.5.0</version>
</dependency>
**Shading guava**
<relocation> <!-- Conflicts between Cassandra Java driver and YARN -->
<pattern>com.google</pattern>
<shadedPattern>oryx.com.google</shadedPattern>
<includes>
<include>com.google.common.**</include>
</includes>
</relocation>
Spark 版本:1.5.2 Cassandra 版本:2.2.3
【问题讨论】:
-
你能分享一下你正在使用的 Cassandra 版本、连接器版本和 spark 版本,以及你是如何对库进行着色的吗?
-
@Christophe,我已更新问题以反映组件版本号。
-
我也有同样的问题。它发生在单元测试中。在 IntelliJ 中运行测试时,它可以工作,但
sbt myProject/test失败。
标签: scala apache-spark spark-cassandra-connector