为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我们不在 Spark-Cassandra-Connector 中定义一个

为什么我们不在 Spark-Cassandra-Connector 中定义一个

潇湘沐 2022-11-30 16:44:37
我看到了 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.javaCassandraConnector eventsConnector = CassandraConnector.apply(sc.getConf().set("spark.cassandra.connection.host", "192.168.36.234"));
查看完整描述

1 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

我的第一个建议是不要在 Java 中使用 RDD。Java 中的 RDD 比 Scala 中的要困难得多,它也是旧的 api。我建议改用 DataFrames。这些提供了不同数据源之间更清晰的接口以及自动优化和其他好处。


现在,如果您不能使用 DataFrames,您只需制作 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-L129


就像是


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。由于写入是在调用结束时立即发生的,因此它需要一个构建器。


查看完整回答
反对 回复 2022-11-30
  • 1 回答
  • 0 关注
  • 74 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号