在hadoop.cassandra.cql3中使用GT时,输入WHERE子句会引发异常

时间:2013-08-13 12:55:03

标签: hadoop cassandra cql3

当使用大于(>)符号时,我很难限制MapReduce作业迭代的列范围。

我使用setInputWhereClauses()来指定列范围,例如:

CqlConfigHelper.setInputWhereClauses(conf, "ts > '634926385000000000'");

使用LT(<)按预期工作,但在使用GT(>)时抛出InvalidRequestException。

  

了java.lang.RuntimeException           在org.apache.cassandra.hadoop.cql3.CqlPagingRecordReader $ RowIterator.executeQuery(CqlPagingRecordReader.java:646)   引起:InvalidRequestException(原因:在ts上发现无效限制)           在org.apache.cassandra.thrift.Cassandra $ prepare_cql3_query_result.read(Cassandra.java:39567)

有人可以建议为什么认为使用GT是“无效限制”吗?

更新

我在日志中找到了CqlPagingRecordReader正在生成的查询:

CqlPagingRecordReader: partition keys: ["key"]
CqlPagingRecordReader: cluster columns: ["ts"]
CqlPagingRecordReader: row key validator:org.apache.cassandra.db.marshal.UTF8Type
CqlPagingRecordReader: previous RowKey: null, new row key: 1:
CqlPagingRecordReader: type: 2, query: SELECT * FROM "test_cf"
    WHERE token("key") = token(?)  AND "ts" > ?
    AND ts>'634926385000000000' LIMIT 3 ALLOW FILTERING

所以看起来我的自定义WHERE子句与记录分页冲突。我是如何解决这个问题的?

0 个答案:

没有答案