Cassandra Hector——查询不工作

标签 cassandra

我正在对 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 查询是否不支持上述查询?

最佳答案

根据您的模式,假设 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 and KEY =< endkey AND name1 = value1
  • SELECT ... WHERE KEY IN ('', '', '', ...)

关于Cassandra Hector——查询不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8442383/

相关文章:

Node.js SSL Cassandra Apache

python - 将 Cassandra OrderedMapSerializedKey 转换为 Python 字典

python - 仅使用日期从cassandra中删除记录

java - 缩放cassandra流错误(空指针异常)

cassandra - 从 Cassandra 获取最后插入的数据

Cassandra CQL3 切片查询问题 - 如何切片

cassandra - 访问 cassandra map 元素

mongodb - 需要Liquibase替代mongodb和/或cassandra数据库

elasticsearch - 如何将cassandra中的数据加载到elasticsearch中

java - 无法将 'cluster' 下的属性绑定(bind)到 com.datastax.driver.core.Cluster