java.lang.NoSuchMethodError: com.datastax.driver.core.ResultSet.fetchMoreResults () - PullRequest
0 голосов
/ 29 июня 2018

Эта проблема похожа на:

Что происходит - NoSuchMethodError: com.datastax.driver.core.ResultSet.fetchMoreResults

Всякий раз, когда я пытаюсь запросить таблицу Кассандры, она всегда выдает мне следующую ошибку:

java.lang.NoSuchMethodError: com.datastax.driver.core.ResultSet.fetchMoreResults()Lshade/com/datastax/spark/connector/google/common/util/concurrent/ListenableFuture;
    at com.datastax.spark.connector.rdd.reader.PrefetchingResultSetIterator.maybePrefetch(PrefetchingResultSetIterator.scala:26) ~[spark-cassandra-connector_2.11-2.0.8.jar!/:2.0.8]
    at com.datastax.spark.connector.rdd.reader.PrefetchingResultSetIterator.next(PrefetchingResultSetIterator.scala:39) ~[spark-cassandra-connector_2.11-2.0.8.jar!/:2.0.8]
    at com.datastax.spark.connector.rdd.reader.PrefetchingResultSetIterator.next(PrefetchingResultSetIterator.scala:17) ~[spark-cassandra-connector_2.11-2.0.8.jar!/:2.0.8]

Поскольку класс ResultSet присутствует как в ядре cassandra-driver-core, так и в spark-cassandra-разъем.

Предыдущие сообщения предлагают удалить jar-ядро cassandra-driver-core, поскольку оно конфликтует со встроенным драйвером искрового-cassandra-разъема.

Вот решения, которые я пробовал до сих пор:

  1. удаление зависимости cassandra-driver-core от pom
  2. исключая ядро ​​cassandra-driver из зависимости искрового-cassandra-разъема, используя
<dependency>
            <groupId>com.datastax.spark</groupId>
            <artifactId>spark-cassandra-connector_2.11</artifactId>
            <version>2.0.8</version>
            <exclusions> 
                <exclusion> 
                    <groupId>com.datastax.cassandra</groupId>
                    <artifactId>cassandra-driver-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

но ни один из них не работал, каждый раз, когда я перестраиваю свой код, снова появляется jar-файл cassandra-driver-core и выдает ту же ошибку.

Я также пытался удалить его вручную из jar проекта, но затем проект не может подключиться к базе данных cassandra.

Есть ли решение этого конфликта зависимостей.

Любая помощь очень ценится. Заранее спасибо!

1 Ответ

0 голосов
/ 30 июня 2018

Нашел решение для этого. Я удалил спарк-соединитель-кассандра и использовал незакрашенную зависимость спарк-кассандра. Причина использования незатененной зависимости заключается в том, что ранее API REST считывал класс Resultset из Guava, который не содержит метод fetchMoreResult. Используя незатененную версию, как-то удаляет этот конфликт и делает вызов jar-файла cassandra-driver-core.

Кроме того, при добавлении незатененной зависимости он выдавал «Ошибка отсутствия артефакта», поскольку STS не удалось загрузить требуемый файл JAR. Поэтому пришлось скачать банку и поместить ее в незаштрихованную папку вручную.

...