我正在使用cassandra的hector API。
我创建一个如下表所示的计数器表
private void addColumnFamilyCounter(ThriftCluster cluster, String cfName, int rowCacheKeysToSave) {
String cassandraKeyspace = this.env.getProperty("cassandra.keyspace");
ThriftCfDef cfd =
new ThriftCfDef(cassandraKeyspace, cfName, ComparatorType.UTF8TYPE);
cfd.setRowCacheKeysToSave(rowCacheKeysToSave);
cfd.setDefaultValidationClass(ComparatorType.COUNTERTYPE.getClassName());
cluster.addColumnFamily(cfd);
}
并调用上面的方法如下
addColumnFamilyCounter(cluster, COUNTER_CF, 0);
表的格式如下
Primary key columns
Munich jingle : 1
mingle : 2
tingle : 1
pingle : 5
现在我想执行一个查询来获取慕尼黑下的所有列及其值。有什么方法可以得到所有的专栏。
我现在知道的是以下查询,但它只给出了主键和列键组合的价值。
@Override
public long getTagCounter(String domain, String tag) {
CounterQuery<String, String> counter =
new ThriftCounterColumnQuery<String, String>(keyspaceOperator,
StringSerializer.get(),
StringSerializer.get());
counter.setColumnFamily(TAG_COUNTER_CF).setKey("p_key").setName("name");
return counter.execute().get().getValue();
}
答案 0 :(得分:0)
好吧,我自己找到答案。我希望它对其他人有所帮助
CounterSlice<String> query = HFactory.createCounterSliceQuery(keyspaceOperator , StringSerializer.get(), StringSerializer.get())
.setColumnFamily("CF")
.setKey("PK")
.setRange(null, null, false, Integer.MAX_VALUE).execute().get();
for(HCounterColumn<String> col : query.getColumns()){
log.info(col.getName());
log.info(col.getvalue());
}