1

我有一个带有二级索引“指针”的列族。如何删除具有相同“指针”值(例如 abc)的多行?

我知道的唯一选择是:

expr = create_index_expression('pointer', 'abc')
clause = create_index_clause([expr])
for key, user in cassandra_cf.get_indexed_slices(clause):
    cassandra_cf.remove(key)

但我知道这是非常低效的,如果我有数千行具有相同的“指针”值,可能需要很长时间。还有其他选择吗?

4

1 回答 1

0

您可以一次删除多行:

expr = create_index_expression('pointer', 'abc')
clause = create_index_clause([expr])
with cassandra_cf.batch() as b:
    for key, user in cassandra_cf.get_indexed_slices(clause):
        b.remove(key)

这会将删除分组为 100 个批次(默认情况下)。当批处理对象在这里用作上下文管理器时,一旦with离开块,它将自动处理发送任何剩余的突变。

pycassa.batch您可以在API 文档中阅读更多相关信息。

于 2012-12-31T20:55:35.350 回答