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