3

您好,我正在尝试使用 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();

我在哪里犯错?

4

2 回答 2

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

如果您确实需要切片,则从 HFactory.createSliceCounterSliceQuery() 返回的结果将是

QueryResult<CounterSlice<String>>

其中将包含列表

HCounterColumn<String>
于 2011-11-01T20:11:40.720 回答
4

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

于 2011-11-06T03:07:01.907 回答