Spark on Cassandra:有没有办法通过分区键删除数据?

Spark on Cassandra : is there a way to remove data by partition key?

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

The values in the RDD are interpreted as Primary Key constraints.

我有一个这样的 table :

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

如您所见,apartition keybclustering key

我需要一个 spark app 可以通过 partition_key 而不是 primary key 有效地删除。

的确,我的目标是始终按 partition keys 删除整个分区,而不是为每个 primary key.

创建 thombstones

如何使用 spark 连接器做到这一点?

谢谢

是的,如果您将 keyColumns 参数指定给 .deleteFromCassandra 函数 (docs),则可以执行此操作。例如,如果您的复合分区键包含两列 part1 & part2:

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

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

中的讨论