【问题标题】:Cassandra Hector -- In query not workingCassandra Hector——查询不工作
【发布时间】:2012-01-16 13:29:21
【问题描述】:

我正在探索 cassandra cql 查询。我安装了 cassandra 1.0 并使用 hector java api 。 我遇到这样的异常:-

me.prettyprint.hector.api.exceptions.HInvalidRequestException: InvalidRequestException(why:line 1:99 extraneous input ')' expecting EOF)
    at me.prettyprint.cassandra.service.ExceptionsTranslatorImpl.translate(ExceptionsTranslatorImpl.java:50)
    at me.prettyprint.cassandra.model.CqlQuery$1.execute(CqlQuery.java:127)
    at me.prettyprint.cassandra.model.CqlQuery$1.execute(CqlQuery.java:94)
    at me.prettyprint.cassandra.service.Operation.executeAndSetResult(Operation.java:101)
    at me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:232)
    at me.prettyprint.cassandra.model.ExecutingKeyspace.doExecuteOperation(ExecutingKeyspace.java:97)
    at me.prettyprint.cassandra.model.CqlQuery.execute(CqlQuery.java:93)
    at CassandraBulkUpload.inComplexQuery(CassandraBulkUpload.java:80)
    at CassandraBulkUpload.<init>(CassandraBulkUpload.java:60)
    at BulkDataLoadExample.main(BulkDataLoadExample.java:22)
Caused by: InvalidRequestException(why:line 1:99 extraneous input ')' expecting EOF)
    at org.apache.cassandra.thrift.Cassandra$execute_cql_query_result.read(Cassandra.java:30983)
    at org.apache.cassandra.thrift.Cassandra$Client.recv_execute_cql_query(Cassandra.java:1708)
    at org.apache.cassandra.thrift.Cassandra$Client.execute_cql_query(Cassandra.java:1682)
    at me.prettyprint.cassandra.model.CqlQuery$1.execute(CqlQuery.java:100)

我正在尝试运行此查询:-

CqlQuery<String, String, String> cqlQuery = new CqlQuery<String, String, String>(HFactory.createKeyspace("largedata",cluster),stringSerializer,stringSerializer,stringSerializer);
            String  cql= "SELECT BookTitle FROM book WHERE isbn in((SELECT id FROM book b where year_of_publication='\"1999\"'))";
    cqlQuery.setQuery(cql);
        QueryResult<CqlRows<String, String, String>> result = cqlQuery.execute();

我还在 year_of_publication 创建了二级索引。 谁能告诉 cql cassandra 查询是否不支持上述查询?

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    根据您的架构,假设 book 列族包含所有必要的列,您的查询可能只是:

    SELECT BookTitle FROM book WHERE year_of_publication='1999'
    

    我不相信 Cassandra CQL 支持子选择语法(目前)。根据cql-reference,过滤仅限于:

    • SELECT ... WHERE KEY = keyname AND name1 = value1
    • SELECT ... WHERE KEY >= startkey 和 KEY =
    • SELECT ... WHERE KEY IN ('', '', '', ...)

    【讨论】:

      【解决方案2】:

      您正在尝试执行 Cassandra CQL 不支持的联接。

      【讨论】:

        猜你喜欢
        • 2013-07-13
        • 2015-06-03
        • 1970-01-01
        • 1970-01-01
        • 2012-02-08
        • 2011-11-12
        • 2014-08-03
        • 2011-10-17
        • 2012-03-12
        相关资源
        最近更新 更多