我对我的代码有以下反查询:
private CounterSlice<String> queryLastCounts(Long key, String columnFamily,
int maxLength) {
SliceCounterQuery<Long, String> query =
HFactory.createCounterSliceQuery(cassandra.getKeyspace(),
LONG_S, STRING_S);
query
.setColumnFamily(columnFamily)
.setKey(key)
.setRange("", "", true, maxLength);
return query.execute().get();
}
在我的单元测试中,代码运行得非常好。但在运行正确的应用程序时(我使用的是storm),会出现以下错误:
Caused by: InvalidRequestException(why:String didn't validate.)
at org.apache.cassandra.thrift.Cassandra$get_slice_result.read(Cassandra.java:7756)
at org.apache.cassandra.thrift.Cassandra$Client.recv_get_slice(Cassandra.java:570)
at org.apache.cassandra.thrift.Cassandra$Client.get_slice(Cassandra.java:542)
at me.prettyprint.cassandra.service.KeyspaceServiceImpl$8.execute(KeyspaceServiceImpl.java:308)
... 25 more
我还利用赫克托访问Cassandra。
1条答案
按热度按时间rm5edbpk1#
正如@ar3s所建议的,这里是这个问题的解决方案。
我把我的列验证器作为默认值,它使用utf8。解决方案是将其更改为长验证器,然后一切正常。
这里的教训是:
检查您的数据验证器中有问题的列。