我有一个带有复合键的列家族:
create column family MyCF
with key_validation_class = 'CompositeType(UTF8Type, UTF8Type)'
and comparator = 'CompositeType(UTF8Type, UTF8Type)'
and default_validation_class='CompositeType(UTF8Type, UTF8Type)'
;
我存储了行键,其中包含以下值:1:1,2:2,1:3,2:1,1:2,2:3
RowKey: 1:1
= (column=colum1, value=value1, timestamp=1351093372962000)
RowKey: 2:2
=> (column=colum1, value=value1, timestamp=1351093411137000)
RowKey: 1:3
= (column=colum1, value=value1, timestamp=1351093385820000)
RowKey: 2:1
= (column=colum1, value=value1, timestamp=1351093401162000)
RowKey: 1:2
= (column=colum1, value=value1, timestamp=1351093379274000)
RowKey: 2:3
= (column=colum1, value=value1, timestamp=1351093421393000)
加载Cassandra后,我希望恢复所有以1开头的行,即 1:1,1:2和1:3
我尝试过使用Hector和Thrift,但我无法找到有关文档的任何信息。
使用CQL无法恢复它,因为不支持这种查询,或者这就是论坛上的说法。
我还设法通过选择行键(1:1,1:2,1:3)来恢复信息,这可以正常工作,但我真正需要做的是恢复只询问第一个的信息集成密钥的元素。
我该怎么做?
由于
答案 0 :(得分:0)
嗯,完全不同的方式是这样的
RowKey: 1:1
= (extra:1, column=colum1, value=value1, timestamp=1351093372962000)
RowKey: 2:2
=> (extra:2, column=colum1, value=value1, timestamp=1351093411137000)
RowKey: 1:3
= (extra:1, column=colum1, value=value1, timestamp=1351093385820000)
RowKey: 2:1
= (extra:2, column=colum1, value=value1, timestamp=1351093401162000)
RowKey: 1:2
= (extra:1, column=colum1, value=value1, timestamp=1351093379274000)
RowKey: 2:3
= (extra:2, column=colum1, value=value1, timestamp=1351093421393000)
然后你可以索引额外的字段。作为使用cassandra的PlayOrm中的示例,您可以拥有
public class Entity {
@NoSqlId
private String id;
@NoSqlIndexed
private String extra;
@NoSqlPartitionedBy
private Account fieldYouMightPartitionBy;
private String column;
private String value;
}
然后你可以运行
PARTITIONS (:partitionId) SELECT e from Entity as e WHERE e.extra = 1;
后, 迪安