java—为什么我们不在spark cassandra连接器中定义一个readerbuilder,用于从cassandra db读取数据

ubof19bj  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(290)

我看到了spark cassandra connector的github repo,我没有发现一个readerbuilder实现了它们,但是实现了一个writerbuilder,有人能帮我吗,因为我想使用cassandraconnector引用从cassandra db读取数据。
我想在同一个sparkcontext中连接两个cassandra集群,我想从这两个集群中读取数据,因此我需要一个readerbuilder从我的第二个cassandra集群读取数据。我在这里使用java语言。
github回购链接:https://github.com/datastax/spark-cassandra-connector/blob/master/spark-cassandra-connector/src/main/java/com/datastax/spark/connector/japi/rddanddstreamcommonjavafunctions.java

CassandraConnector eventsConnector = CassandraConnector.apply(sc.getConf().set("spark.cassandra.connection.host", "192.168.36.234"));
eufgjt7s

eufgjt7s1#

我的第一个建议是不要在java中使用rdd。java中的rdd比scala中的要困难得多,而且它也是旧的api。我建议改用Dataframe。它们在不同的数据源之间提供了一个更干净的接口以及自动优化和其他好处。
现在,如果不能使用Dataframe,则只需生成cassandrajavardd,然后使用“withconnector”或“withreadconf”来更改读取配置。
https://github.com/datastax/spark-cassandra-connector/blob/master/spark-cassandra-connector/src/main/java/com/datastax/spark/connector/japi/rdd/cassandrajavardd.java#l123-第129页
像这样的

val cluster2 = CassandraConnector eventsConnector = 
  CassandraConnector.apply(
    sc.getConf()
      .set("spark.cassandra.connection.host", "192.168.36.234"));

  javaFunctions(sc).cassandraTable(ks, "test_table").withConnector(cluster2).collect()
}

不需要构建器,因为rdd本身有一个流畅的api。由于在调用结束时立即进行编写,因此需要一个生成器。

相关问题