将Foreachpartition循环中的Dataframe保存到Cassandra

时间:2019-02-04 17:08:56

标签: scala apache-spark apache-spark-sql

我正在寻找在foreachpartition循环中将整个Dataframe保存到Cassandra。

我知道我可以在foreachpartition中获得Cassandra连接器,并使用以下代码在cassandra上执行CRUD语句:

val conf: SparkConf = new SparkConf(true)
.set("spark.cassandra.connection.host", "IP")
.set("spark.cassandra.auth.username", "username")
.set("spark.cassandra.auth.password", "pwd")
val cdbConnector = CassandraConnector(conf)

cdbConnector.withSessionDo(session =>
session.execute(//Insert statement)
)

但是我对将整个Dataframe一次存储在foreachpartition中的Cassandra表中感兴趣。

此外,当我执行以下语句来创建数据框并在foreachpartition的Cassandra中写入数据框时,我的应用程序正在挂起,并且所有线程都处于等待状态。

df.write.format("org.apache.spark.sql.cassandra").options(Map( "table" -> "***", "keyspace" -> "***")).save()

1 个答案:

答案 0 :(得分:0)

您应该可以直接使用Cassandra API进行调用,可以尝试一下是否有帮助

FormClosing

您应该能够保存数据,并且不需要显式调用ForEachPartition

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    //Dispose images
    if (zero != null) zero.Dispose();
    if (negative != null) negative.Dispose();
    if (positive != null) positive.Dispose();
}