2011-12-09 13 views
2

私はcassandra cqlクエリを少し調べています。私はcassandra 1.0をインストールし、hector java apiを使用しています。私はyear_of_publication上のセカンダリインデックスを作成してもCassandra Hector - クエリが機能しない

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

- :

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) 

私はこのクエリを実行しようとしています - : は、私はこのような例外を取得します。 誰でもcql cassandraクエリが上記のものをサポートしていないかどうか教えてください。

答えて

3

スキーマが何であるかに応じて、本の柱ファミリは、必要なすべての列が含まれていると仮定すると、クエリは、ちょうど次のようになります。

SELECT BookTitle FROM book WHERE year_of_publication='1999' 

私はカサンドラCQLは(まだ)サブ選択構文をサポートしています信じていません。 cql-referenceによると、フィルタリングがにlimtedさ:

  • SELECT ... WHERE KEY =キー名とNAME1 = VALUE1
  • SELECT ... WHERE KEY> = startkeyとKEY = < endkey AND NAME1 = VALUE1
  • SELECT ... WHERE KEY IN( ''、 ''、 ''、...)
3

Cassandra CQLでサポートされていない結合を実行しようとしています。

関連する問題