您好我正在尝试使用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();
}
Run Code Online (Sandbox Code Playgroud)
没有疑问它应该是这样的,但我不能让它工作:
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();
Run Code Online (Sandbox Code Playgroud)
我在哪里弄错了?
您的示例不完整,您没有说明失败的原因.但是从查看你的代码来看,有一些问题:错误的类型,参数,你需要使用特定的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());
Run Code Online (Sandbox Code Playgroud)
如果你确实需要Slice,那么从HFactory.createSliceCounterSliceQuery()返回的结果将是
QueryResult<CounterSlice<String>>
Run Code Online (Sandbox Code Playgroud)
其中将包含List of
HCounterColumn<String>
Run Code Online (Sandbox Code Playgroud)