如何从hess中获取cassandra的反柱值?

时间:2011-11-01 15:00:18

标签: cassandra hector

您好我正在尝试使用hector从cassandra获取数据。 有两种方法可以做到这一点。

一个是这样的cqlQuery:

CqlQuery<String, String, Long> cqlQuery = new CqlQuery<String, String, Long>(connect.tutorialKeyspace, stringSerializer, stringSerializer, longSerializer);
    cqlQuery.setQuery("select home from page_view_counts where KEY ="localhost");

    QueryResult<CqlRows<String, String, Long>> result;
    try
    {
        result = cqlQuery.execute();
    }
    catch(HectorException e){
        result = null;
        message = e.getMessage();
    }

如果没有疑问,它应该是这样的,但我不能让它起作用:

SliceQuery<String, String, Long> query = HFactory.createSliceQuery(connect.tutorialKeyspace, stringSerializer,stringSerializer,longSerializer); 
    QueryResult<ColumnSlice<String, Long>> result2 = query.setColumnFamily("page_view_counts").setKey("localhost").setColumnNames("home").execute();

我在哪里犯这个错误?

2 个答案:

答案 0 :(得分:8)

您的示例不完整,您没有说明失败的原因。但是从查看你的代码来看,有一些问题:错误的类型,参数,你需要使用特定的Counter类型,如果只获得一个列,则不需要Slice。这个例子应该有效:

CounterQuery<String, String> query = HFactory.createCounterColumnQuery(keyspace, stringSerializer,stringSerializer);
query.setColumnFamily("page_view_counts").setKey("localhost").setName("home");
HCounterColumn<String> counter = query.execute().get();
System.out.println("Count:" + counter.getValue());

如果你确实需要Slice,那么从HFactory.createSliceCounterSliceQuery()返回的结果将是

QueryResult<CounterSlice<String>>

将包含

列表
HCounterColumn<String>

答案 1 :(得分:4)

使用ColumnFamilyTemplate API可能是轻松入门的最佳方式。请参阅:http://rantav.github.com/hector/build/html/content/getting_started.html(上面提到的部分或hector-client.org)。