首页 > 解决方案 > Cassandra 上的 Spark:有没有办法通过分区键删除数据?

问题描述

spark Cassandra 连接器有RDD.deleteFromCassandra(keyspaceName, tableName)方法。

RDD 中的值被解释为主约束。

我有一张这样的桌子:

CREATE TABLE table (a int, b int, c int, PRIMARY KEY (a,b));

如您所见,apartition keybclustering key

我需要一个spark app有效地删除 by partition_key,而不是 by primary key

事实上,我的目标是始终将整个分区删除partition keys,而不是为每个分区创建一个 thombstones primary key

如何用火花连接器做到这一点?

谢谢

标签: apache-sparkcassandradatastaxdatastax-enterprisespark-cassandra-connector

解决方案


是的,如果您keyColumns为函数指定参数.deleteFromCassandradocs),则可以这样做。例如,如果您有由两列part1&组成的复合分区键part2

rdd.deleteFromCassandra("keyspace", "table", 
  keyColumns = SomeColumns("part1", "part2"))

此方法仅适用于 RDD,如果您使用 DataFrames,那么您只需要做df.rdd. 此外,在某些版本的连接器中,您可能需要将选择限制为仅对列进行分区 - 请参阅此答案中的讨论。


推荐阅读