【发布时间】:2016-06-07 16:27:30
【问题描述】:
我们使用DSE4.8.3 Cassandra在oozie中运行CDH5.5.0 Spark,发现DSE Cassandra存在如下guava-16.0.1.jar冲突问题。
Oozie Launcher 失败,主类 [org.apache.oozie.action.hadoop.SparkMain],main() 抛出异常,com.google.common.reflect.TypeToken.isPrimitive()Z java.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。用于 cassandra 驱动程序和连接器。
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,而不是guava-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作为它们的依赖项,它引发了以下异常: 线程“主”java.lang.AbstractMethodError 中的异常:com.datastax.spark.connector.cql.LocalNodeFirstLoadBalancingPolicy.close()V
在 com.datastax.driver.core.Cluster$Manager.close(Cluster.java:1417)
在 com.datastax.driver.core.Cluster$Manager.access$200(Cluster.java:1167)
在 com.datastax.driver.core.Cluster.closeAsync(Cluster.java:461)
在 com.datastax.driver.core.Cluster.close(Cluster.java:472)
在 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 connector fails with LocalNodeFirstLoadBalancingPolicy.close()
所以现在,我们对 Cassandra 依赖问题感到困惑。如何解决这个 cassandra guava-16.0.1 依赖问题?是否可以构建一个新的 spark-cassandra-connector.jar 来解决这两个问题?你能帮忙解决这个问题吗?谢谢!
【问题讨论】:
标签: apache-spark cassandra oozie datastax-enterprise