我有一个spark应用程序,它从一个cassandra集群读取数据,并在一些计算后将数据保存到另一个cassandra集群。我只能在sparkconf中设置1个cassandra配置。但是我需要再连接一个cassandra集群。
我看到一个用于连接cassandra的CassandraConnector类,但它使用CassandraConnectorConf对象来创建一个对象,该对象需要很多我不知道的参数。
任何帮助都会有所帮助
答案 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。
执行此操作