gpt4 book ai didi

scala - 带有 spark-cassandra 连接器的 saveToCassandra 抛出 java.lang.ClassCastException

转载 作者:行者123 更新时间:2023-12-04 12:46:23 25 4
gpt4 key购买 nike

尝试将数据保存到 Cassandra(在 Scala 中)时,出现以下异常:

java.lang.ClassCastException: com.datastax.driver.core.DefaultResultSetFuture cannot be cast to com.google.common.util.concurrent.ListenableFuture



请注意,我不会每次都收到此错误,但它偶尔会随机出现,这使得它在生产中更加危险。

我正在使用 YARN,并且对 com.google.** 进行了阴影处理以避免 Guava 符号冲突。

这是代码片段:
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>

星火版本:1.5.2
Cassandra 版本:2.2.3

最佳答案

几乎所有在 C* 和 Spark 上工作的人都见过这些类型的错误。根本原因解释here .

C* 驱动程序依赖于相对较新版本的 Guava ,而 Spark 依赖于较旧的 Guava 。要在连接器 1.6.2 之前解决此问题,您需要在应用程序中显式嵌入 C* 驱动程序和 Guava 。

从 1.6.2 和 2.0.0-M3 开始,默认情况下连接器附带正确的 C* 驱动程序和 Guava 阴影。因此,您应该可以只使用项目中包含的连接器工件。

如果您的 Spark 应用程序使用其他依赖 C* 驱动程序的库,事情就会变得棘手。然后,您必须手动包含未着色版本的连接器、正确的 C* 驱动程序和着色 Guava ,并部署一个胖 jar。您基本上可以制作自己的连接器包。在这种情况下,您不能再使用 --package 来启动 Spark 集群。

tl;博士

使用连接器 1.6.2/2.0.0-M3 或更高版本。 99% 你应该没问题。

关于scala - 带有 spark-cassandra 连接器的 saveToCassandra 抛出 java.lang.ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37300180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com