Какие версии следует использовать для подключения Spark Cassandra с использованием языка Java? - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь соединить базу данных spark и cassandra, используя язык Java.Для подключения свечей и кассандры я использую последнюю версию Spark-cassandra-Connector, т.е. 2.4.0.В настоящее время я могу подключить свечи и кассандру с помощью разъема.Я получаю данные в формате RDD, но не могу прочитать данные из этой структуры данных.Если я использую фабрику чтения строк в качестве третьего параметра cassandraTable (), я получаю

> Wrong 3rd argument type. Found:
> 'java.lang.Class<com.journaldev.sparkdemo.JohnnyDeppDetails>',
> required:
> 'com.datastax.spark.connector.rdd.reader.RowReaderFactory<T>'

Может кто-нибудь сказать мне, какую версию мне следует использовать или в чем здесь проблема?

CassandraTableScanJavaRDD PricesRDD2 = CassandraJavaUtil.javaFunctions (sc) .cassandraTable (пространство ключей, таблица, JohnnyDeppDetails.class);

My pom.

    <!-- Import Spark -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.4.0</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.datastax.spark/spark-cassandra-connector -->
    <dependency>
        <groupId>com.datastax.spark</groupId>
        <artifactId>spark-cassandra-connector_2.11</artifactId>
        <version>2.4.0</version>
    </dependency>

    <dependency>
        <groupId>com.datastax.spark</groupId>
        <artifactId>spark-cassandra-connector-java_2.10</artifactId>
        <version>1.5.0-M2</version>
    </dependency>

    <dependency>
        <groupId>com.datastax.cassandra</groupId>
        <artifactId>cassandra-driver-core</artifactId>
        <version>2.1.9</version>
    </dependency>

    <dependency>
        <groupId>com.datastax.cassandra</groupId>
        <artifactId>cassandra-driver-mapping</artifactId>
        <version>2.1.9</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.12</artifactId>
        <version>2.4.0</version>
    </dependency>

</dependencies>

1 Ответ

0 голосов
/ 28 февраля 2019

Вместо передачи экземпляра класса, вам нужно создать RowReaderFactory с помощью функции mapRowTo, например так (это из моего примера ):

CassandraJavaRDD<UUIDData> uuids = javaFunctions(spark.sparkContext())
      .cassandraTable("test", "utest", mapRowTo(UUIDData.class));

когда вы напишете обратно, вы можете преобразовать класс в соответствующую фабрику с помощью функции mapToRow.

...