【问题标题】:Which versions should be used for Spark cassandra connection using java Language?使用 java 语言的 Spark cassandra 连接应该使用哪些版本?
【发布时间】:2019-07-09 10:07:44
【问题描述】:

我正在尝试使用 Java 语言连接 spark 和 cassandra 数据库。为了连接 spark 和 cassandra,我使用的是最新版本的 Spark-cassandra-Connector,即 2.4.0。目前我可以使用连接器连接 spark 和 cassandra。我正在获取 RDD 格式的数据,但我无法从该数据结构中读取数据。如果我使用行阅读器工厂作为 cassandraTable() 的第三个参数,我会得到 ​​p>

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

谁能告诉我应该使用哪个版本或这里有什么问题?

CassandraTableScanJavaRDD 价格RDD2 = CassandraJavaUtil.javaFunctions(sc).cassandraTable(keyspace,table,JohnnyDeppDetails.class);

我的 pom.xml:

    <!-- 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>

【问题讨论】:

    标签: java apache-spark cassandra spark-cassandra-connector


    【解决方案1】:

    您需要使用mapRowTo 函数创建RowReaderFactory,而不是传递类实例,如下所示(这是from my example):

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

    当你回信时,你可以通过mapToRow函数将类转换为对应的工厂。

    【讨论】:

      猜你喜欢
      • 2016-12-02
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 2017-07-05
      • 2015-05-19
      • 1970-01-01
      • 2016-05-10
      相关资源
      最近更新 更多