2012-05-19 70 views

回答

1

您必須首先執行列切片以獲取要刪除的列,然後循環並生成突變列表。然後您可以在一次Hector呼叫中將所有這些突變發送到Cassandra:

Mutator<..> mutator = HFactory.createMutator(keyspace, serializer); 

SuperSlice<..> result = HFactory.createSuperSliceQuery(keyspace, ... serializers ...) 
           .setColumnFamily(cf) 
           .setKey(key) 
           .setRange("", "", false, Integer.MAX_VALUE) 
           .execute() 
           .get(); 

for (HSuperColumn<..> col in result.getSuperColumns()) 
    mutator.addDeletion(key, cf, col.getName(), serializer); 

mutator.execute(); 
+0

我現在有不同的問題。如果我只想刪除一個列,我是否仍然需要進行superslice查詢,我認爲它相當昂貴? – tom

+0

如果您已經知道密鑰,您可以簡單地爲每個密鑰創建一個突變列表,並提供列名(與上述答案中的相同)。如果你不知道密鑰,你需要一個RangeSlicesQuery,你可以在這裏調用setReturnKeysOnly()來避免把所有事情都弄回來。 –

+0

值得一提的是,你應該研究用複合材料替代SCs。有關複合列的詳細信息,請參見[本文](http://www.datastax.com/dev/blog/introduction-to-composite-columns-part-1)。 –