如何使用spark cassandra连接器连接到多个cassandra主机

时间:2015-08-11 07:27:52

标签: apache-spark spark-cassandra-connector

我有一个spark应用程序,它从一个cassandra集群读取数据,并在一些计算后将数据保存到另一个cassandra集群。我只能在sparkconf中设置1个cassandra配置。但是我需要再连接一个cassandra集群。

我看到一个用于连接cassandra的CassandraConnector类,但它使用CassandraConnectorConf对象来创建一个对象,该对象需要很多我不知道的参数。

任何帮助都会有所帮助

2 个答案:

答案 0 :(得分:2)

使用以下代码:

SparkConf confForCassandra = new SparkConf().setAppName("ConnectToCassandra")
                .setMaster("local[*]")
                .set("spark.cassandra.connection.host", "<cassandraHost>");

CassandraConnector connector = CassandraConnector.apply(confForCassandra);

javaFunctions(rdd).writerBuilder("keyspace", "table", mapToRow(Table.class)).withConnector(connector).saveToCassandra();

答案 1 :(得分:0)

如果要使用 Scala 和Spark连接到两个Cassandra群集,可以使用以下代码:

import com.datastax.spark.connector._
import com.datastax.spark.connector.cql._

import org.apache.spark.SparkContext


def twoClusterExample ( sc: SparkContext) = {
  val connectorToClusterOne = CassandraConnector(sc.getConf.set("spark.cassandra.connection.host", "127.0.0.1"))
  val connectorToClusterTwo = CassandraConnector(sc.getConf.set("spark.cassandra.connection.host", "127.0.0.2"))

  val rddFromClusterOne = {
    // Sets connectorToClusterOne as default connection for everything in this code block
    implicit val c = connectorToClusterOne
    sc.cassandraTable("ks","tab")
  }

  {
    //Sets connectorToClusterTwo as the default connection for everything in this code block
    implicit val c = connectorToClusterTwo
    rddFromClusterOne.saveToCassandra("ks","tab")
  }

} 

原始代码由RusselSpitzer在此编写:https://gist.github.com/RussellSpitzer/437f57dae4fd4bc4f32d

目前无法使用 Python 和Spark。

执行此操作