cassandra 我需要一个计数器查询,它使用hector API为主键提供给予所有计数器

wfsdck30  于 2023-11-18  发布在  Cassandra
关注(0)|答案(1)|浏览(124)

我正在使用hector API for cassandra。
我创建一个如下的计数器表

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();
}

l7wslrjt

l7wslrjt1#

我找到了答案:

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());
     }

字符串

相关问题