Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何使用spark cassandra连接器连接到多个cassandra主机_Apache Spark_Spark Cassandra Connector - Fatal编程技术网

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

Apache spark 如何使用spark cassandra连接器连接到多个cassandra主机,apache-spark,spark-cassandra-connector,Apache Spark,Spark Cassandra Connector,我有一个spark应用程序,它从一个cassandra集群读取数据,经过一些计算后将数据保存到另一个cassandra集群。我只能在sparkconf中设置1个cassandra配置。但我需要再连接一个cassandra群集 我看到一个用于连接cassandra的CassandraConnector类,但它使用CassandraConnectorConf对象来创建一个对象,该对象包含许多我不知道的参数 任何帮助都会有帮助请使用以下代码: SparkConf confForCassandra =

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

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


任何帮助都会有帮助

请使用以下代码:

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();
SparkConf confForCassandra=new SparkConf().setAppName(“ConnectToCassandra”)
.setMaster(“本地[*]”)
.set(“spark.cassandra.connection.host”,”);
CassandraConnector connector=CassandraConnector.apply(与cassandra对应);
javaFunctions(rdd).writerBuilder(“键空间”,“表”,mapToRow(table.class)).withConnector(connector).saveToCassandra();

如果要使用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在此处编写:


目前无法使用Python和Spark实现这一点。

看起来您在这里只连接到一个cassandra主机。您在哪里添加其他主机?某个地方有配置文件吗?您的意思是创建2个SparkConf变量,每个cassandra主机一个,然后创建两个不同的连接器变量?