1

大なり記号 (>) を使用しているときに、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 句がレコード ページングと競合しているようです。これを回避する方法はありますか?

4

0 に答える 0