在时间戳之间执行过滤器时,Cassandra选择查询失败

时间:2016-11-16 08:00:36

标签: cassandra timestamp cql

我正在尝试执行查询:

select key,date,time_stamp,value from archive_all where time_stamp > '2016-11-14 19:00:00+0000' and time_Stamp <= '2016-11-14 20:00:00+0000' allow filtering

但它没有说下面给出的错误:

  

ReadFailure:来自服务器的错误:代码= 1300 [副本未能执行读取]消息=“操作失败 - 收到0响应和1次失败”info = {'failures':1,'received_responses' :0,'required_responses':1,'一致':'ONE'}

time_stamp的类型为timestamp

请帮我解决这个问题。

4 个答案:

答案 0 :(得分:2)

错误表示(实际上)您的查询已超时。你要求Cassandra扫描你的所有数据集,这需要花费很多时间。

通常解决这些问题的方法是删除查询中的users。也就是说,完全摆脱了查询。

换句话说,您应该重新考虑您的数据模型。

答案 1 :(得分:0)

您可以粘贴表架构吗? 为了能够使用“&gt;”和“&lt;”列上的运算符,您必须确保它是一个群集列。 (见documentation

答案 2 :(得分:0)

您必须创建与查询一致的数据模型,以便摆脱ConsoleAppender选项。

这样,您的选择查询将执行得更快。

请参阅:

Basic Rules of Cassandra Data Modeling

答案 3 :(得分:0)

我遇到了同样的错误。我已经尝试了很多方法来克服这个问题。首先,它增加了tombstone_failure_threshold的值。

根据解决方案 here,我将 GC_GRACE_SECONDS 设置为 0。请记住,这只是单节点 Cassandra 上的可行解决方案。但是这些并没有解决我的问题。

我浏览并阅读了许多资源,并要求提供上面答案中的 timeout

我增加了 read_request_timeout_in_ms 文件中 cassandra.yaml 参数的值。

然后我就可以运行所有查询而没有错误。我想添加这个答案,虽然晚了,因为我认为它可能对某人有所帮助。