在Hector,Cassandra中调用方法“addEqualsExpression”时出错

时间:2011-05-30 11:30:16

标签: cassandra hector

Hello开发人员,我在运行上面的代码时遇到错误:

public void getConditioningQuery(String columnName,String value){
        QueryResult<OrderedRows<String, String, String>> result =
        (QueryResult<OrderedRows<String, String, String>>) new IndexedSlicesQuery<String, String, String>(keyspace, serializer, serializer, serializer)
        .addEqualsExpression("state", "TI")
        .setReturnKeysOnly()
        .setColumnFamily(CF_NAME)
        .setStartKey("")
        .execute();
        System.out.println("Result="+result.get().getList());
    }

此方法是查找state = TI的行。 我在我的专栏系列中添加了索引,如果我在cassandra-cli中进行手动查询,则显示数据,但如果我使用hector使用代码,则会出现此错误:

在我的IDE =

345 [main] INFO me.prettyprint.cassandra.service.JmxMonitor - Registering JMX me.prettyprint.cassandra.service_MyCluster:ServiceType=hector,MonitorType=hector
867 [main] INFO me.prettyprint.cassandra.hector.TimingLogger - start[1306754734185] time[91] tag[WRITE.success_]
10926 [main] INFO me.prettyprint.cassandra.hector.TimingLogger - start[1306754734314] time[10021] tag[READ.fail_]
me.prettyprint.hector.api.exceptions.HTimedOutException: TimedOutException()
        at me.prettyprint.cassandra.service.ExceptionsTranslatorImpl.translate(ExceptionsTranslatorImpl.java:32)

并在cassandra log =

ERROR 18:25:34,326 Fatal exception in thread Thread[ReadStage:102,5,main]
java.lang.AssertionError: No data found for NamesQueryFilter(columns=) in DecoratedKey(165611378069681836494944905825187619237, 73616e6a6f7578):QueryPath(columnFamilyName='user', superColumnName='null', columnName='null') (original filter NamesQueryFilter(columns=)) from expression 'user.state EQ TI'
        at org.apache.cassandra.db.ColumnFamilyStore.scan(ColumnFamilyStore.java:1603)
        at org.apache.cassandra.service.IndexScanVerbHandler.doVerb(IndexScanVerbHandler.java:42)
        at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:72)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:680)

我很困惑,因为错误是告诉我们是否找不到列族用户列中的数据,但是如果我使用cassandra-cli,数据会显示..

我很困惑,仍然坚持在这里..可能我的方法是错的?有人可以帮我告诉我有什么问题吗?我仍然谷歌解决这个问题..谢谢你的注意,抱歉我的坏英语:D。

2 个答案:

答案 0 :(得分:1)

如果你使用0.8-rc1或类似的话,看起来你正在点击CASSANDRA-2653。这应该在当前的0.8分支中修复。

答案 1 :(得分:0)

您不能将setReturnKeysOnly用于索引查询。这将在未来的版本中修复(参见Tyler链接的票证);在此期间,只需让它返回一列或多列作为解决方法。