我正在使用以下依赖项创建一个应用程序,这是迄今为止的所有最新版本。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.M5</version>
</parent>
`<dependency>
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector_2.10</artifactId>
<version>2.0.5</</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.3.0</version>
</dependency>`
我得到了这个例外
"Caused by: java.lang.NoSuchMethodError: com.datastax.driver.core.TypeCodec.getJavaType()Lcom/google/common/reflect/TypeToken;"
在做了一些研究后,我发现原因是spark-cassandra-connector_2.10
jar还包含com.datastax.driver
类文件,它也有TypeCodeC.class
但这与TypeCodeC.class
文件不同cassandra-driver-core
到目前为止我有2个解决方案。
maven-shade-plugin
从jar中排除类文件。但是,这需要大量额外的工作。出于某种原因,只有我将项目编译为jar并将此jar作为依赖项添加到我的项目中,然后才能工作。我不认为这是一个很好的解决方案我直接从jar中删除/com/datastax/driver
文件夹和文件。使用此命令
zip -d /Users/cicidi/.m2/repository/com/datastax/spark/spark-cassandra-connector_2.10/2.0.5/spark-cassandra-connector_2.10-2.0.5.jar /com/datastax/driver/*
它有效!然后你需要将这个jar添加到你的项目中,而不是使用maven。(你可以在你的本地使用maven,但是如果你再次拉动jar就不会工作。)
我在互联网上找不到任何答案。我知道会有一些聪明人解决这个问题。但在此之前,我发布此答案是为了帮助那些想立即解决这个问题的人。
答案 0 :(得分:0)
<dependency>
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector_2.10</artifactId>
<version>2.0.0-M1</version>
</dependency>
与
没有版本冲突 <dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.3.0</version>
</dependency>
答案 1 :(得分:0)
根据问题“为什么将Cassandra Java驱动程序嵌入在Spark Cassandra Connector工件中?”在https://github.com/datastax/spark-cassandra-connector/blob/master/doc/FAQ.md中。很难同时使用这两个库。但是我尝试通过在pom中显式指定依赖项来避免该问题。
需要注意以下几点: cassandra-driver- *必须放在spark-cassandra-connector之前。而且3.1.4可能只适用于2.0.0-M1。
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.1.4</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-mapping</artifactId>
<version>3.1.4</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-extras</artifactId>
<version>3.1.4</version>
</dependency>
<dependency>
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector_2.11</artifactId>
<version>2.0.0-M1</version>
</dependency>