DSE Cassandra与CDH火花有番石榴-16.0.1.jar冲突问题



我们使用DSE4.8.3 Cassandra在oozie中运行CDH5.5.0 Spark,刚刚发现DSE Cassandra有guava-16.0.1.jar冲突问题如下。

Failed Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SparkMain], main() threw exception, com.google.common.reflect.TypeToken.isPrimitive()Zjava.lang.NoSuchMethodError: com.google.common.reflect.TypeToken.isPrimitive()Z

DSE 4.8.3 中的 Cassandra 版本是 2.1.11.969。CDH 5.5.0 中的 Spark 版本是 1.5.0。用于卡桑德拉驱动器和连接器。

1.如果我们使用 cassandra-driver-core-2.2.0-rc3.jar 和 spark-cassandra-connector_2.10-1.5.0-M2.jar,它们都使用 guava-16.0.1.jar 作为它们的依赖项,它会在 CDH 中抛出上述异常"找不到方法:com.google.common.reflect.TypeToken.isPrimitive()Z"(CDH5.5.0 Spark 使用 guava-14.0.1.jar,而不是番石榴-16.0.1.jar )。

2.

如果我们使用较低版本的 cassandra-driver-core-2.2.0-rc1.jar 和 spark-cassandra-connector_2.10-1.5.0-M1.jar,它们都使用 guava-14.0.1.jar 作为它们的依赖项,它会抛出以下异常:线程"main"中的异常 java.lang.AbstractMethodError: com.datastax.spark.connector.cql.LocalNodeFirstLoadBalancingPolicy.close()V

at com.datastax.driver.core.Cluster$Manager.close(Cluster.java:1417)

at com.datastax.driver.core.Cluster$Manager.access$200(Cluster.java:1167)

at com.datastax.driver.core.Cluster.closeAsync(Cluster.java:461)

at com.datastax.driver.core.Cluster.close(Cluster.java:472)

at com.datastax.spark.connector.cql.CassandraConnector$.com$datastax$spark$connector$cql$CassandraConnector$$createSession(CassandraConnector.scala:163)

我找到了这个异常的答案:(说使用更高版本的 spark-cassandra-connector_2.10-1.5.0-M2.jar 将解决问题)Spark + Cassandra 连接器失败,LocalNodeFirstLoadBalancingPolicy.close()

所以现在,我们对Cassandra依赖问题感到困惑。如何解决这个卡桑德拉番石榴-16.0.1依赖问题?是否有可能构建一个新的火花-卡桑德拉连接器.jar修复这两个问题?你能帮忙解决这个问题吗? 谢谢!

不应该有 C* 驱动程序依赖项,因为它应该与 Spark Cassandra 连接器依赖项一起自动引入作为传递依赖项。我会使用 1.5.0 版本。然后,您需要确保在构建时排除所有其他番石榴版本。

这意味着如果你正在制作一个胖罐子,请确保你的代码中不包含任何Spark发行版,并且任何Hadoop库都排除了Guava。

还有其他

一些邮件线程以获取更多详细信息

检测到番石榴

问题 #1635,表明正在使用低于 16.01 的番石榴版本。https://groups.google.com/a/lists.datastax.com/forum/#!topic/spark-connector-user/HnTsWJkI5jo

番石榴问题https://groups.google.com/a/lists.datastax.com/forum/#!topic/spark-connector-user/uB_DN_CcK2k

最新更新