【问题标题】:How to insert (not save or update) RDD into Cassandra?如何将 RDD 插入(不保存或更新)到 Cassandra?
【发布时间】:2016-12-15 13:06:19
【问题描述】:

我正在使用 Apache SparkCassandra,我想使用 spark-cassandra-connector 将我的 RDD 保存到 Cassandra。

代码如下:

def saveToCassandra(step: RDD[(String, String, Date, Int, Int)]) = {
  step.saveToCassandra("keyspace", "table")
}

这在大多数情况下都可以正常工作,但会覆盖数据库中已经存在的数据。我不想覆盖任何数据。有可能吗?

【问题讨论】:

标签: cassandra apache-spark


【解决方案1】:

我要做的是:

rdd.foreachPartition(x => connector.WithSessionDo(session => {
  someUpdater.UpdateEntries(x, session)
  // or
  x.foreach(y => someUpdater.UpdateEntry(y, session))
}))

上面的connectorCassandraConnector(sparkConf)

它不如简单的saveToCassandra 好,但它允许细粒度的控制。

【讨论】:

    【解决方案2】:

    我认为最好在 foreach 分区之外使用 WithSessionDo。该调用涉及不需要重复的开销。

    【讨论】:

      猜你喜欢
      • 2016-01-30
      • 2017-04-10
      • 2015-03-06
      • 2015-08-19
      • 2020-07-02
      • 2016-05-26
      • 2018-08-11
      • 2013-01-26
      • 1970-01-01
      相关资源
      最近更新 更多