【发布时间】:2020-02-12 00:58:41
【问题描述】:
我正在尝试使用一致性级别“EACH_QUORUM”向 cassandra 写入 spark Dataframe。我的代码如下所示:
val sparkBuilder = SparkSession.builder().
config(cassandraHostPropertyProperty, cassandraHosts).
config(cassandraAuthUsernameProperty, CASSANDRA_AUTH_USER_KEY).
config(cassandraAuthPassProperty, CASSANDRA_AUTH_PASS_KEY).
config(cassandraIsSSLEnabledProperty, isSSLEnabled)...
getOrCreate();
下面是编写DF的代码:
df.write.cassandraFormat(tableName, keySpaceName)
.mode(SaveMode.Append)
.options(Map(
WriteConf.ParallelismLevelParam.name -> parallelism_Level.toString,
WriteConf.BatchSizeRowsParam.name -> rowsInBatch.toString
))
.save()
我想添加重试策略,以便如果其中一个数据中心停机,将一致性降级写入 LOCAL_QUORUM。
我知道 datastax 有一个类 MultipleRetryPolicy.scala 我应该扩展它,重写方法以添加自定义逻辑并在 cassandra conf 中使用它的实例。
如何将此策略应用于我的 sparksession 或保存操作?在使用或不使用 RetryPolicy 的情况下,scala 中是否有任何其他方式来满足我的要求?
【问题讨论】:
标签: scala apache-spark cassandra datastax-java-driver spark-cassandra-connector