【发布时间】:2013-11-02 21:20:32
【问题描述】:
我正在处理一个项目,我需要在其中使用 Astyanax 客户端删除所有列及其数据,但 Cassandra 中的一列及其数据除外。
我有一个像下面这样的动态列族,我们已经有几百万条记录到该列族中。
create column family USER_TEST
with key_validation_class = 'UTF8Type'
and comparator = 'UTF8Type'
and default_validation_class = 'UTF8Type'
and gc_grace = 86400
and column_metadata = [ {column_name : 'lmd', validation_class : DateType}];
我有 user_id 作为 rowKey,我拥有的其他列是这样的 -
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,lmd
现在我需要删除除a15 列之外的所有列及其数据。意思是,我想为所有user_id(rowKey) 保留a15 列及其数据,并删除其余列及其数据..
我已经知道如何使用 Astyanax 客户端从 Cassandra 删除特定rowKey的数据-
public void deleteRecord(final String rowKey) {
try {
MutationBatch m = AstyanaxConnection.getInstance().getKeyspace().prepareMutationBatch();
m.withRow(AstyanaxConnection.getInstance().getEmp_cf(), rowKey).delete();
m.execute();
} catch (ConnectionException e) {
// some code
} catch (Exception e) {
// some code
}
}
现在如何删除所有列及其数据,除了所有用户 id 的一列,即我的 rowKey...
有什么想法可以有效地使用 Astyanax 客户端完成吗?
【问题讨论】: