大なり記号 (>) を使用しているときに、MapReduce ジョブが繰り返す列の範囲を制限するのに苦労しています。
列の範囲を指定するために setInputWhereClauses() を使用しています。
CqlConfigHelper.setInputWhereClauses(conf, "ts > '634926385000000000'");
これは LT (<) を使用すると期待どおりに機能しますが、GT (>) を使用すると InvalidRequestException がスローされます。
org.apache.cassandra.hadoop.cql3.CqlPagingRecordReader$RowIterator.executeQuery(CqlPagingRecordReader.java:646) での java.lang.RuntimeException 原因: org.apache.cassandra.thrift での InvalidRequestException (理由: ts で無効な制限が見つかりました)。 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 句がレコード ページングと競合しているようです。これを回避する方法はありますか?