我有一个非常简单的时间数据集
CREATE TABLE incoming (
id uuid,
otime timeuuid,
data map<text, text>,
type int,
PRIMARY KEY (id)
)
我在尝试执行基于时间的查询时发现错误,我正在关注数据存储区中的示例,但是查找是否执行此类查询
SELECT data FROM incoming WHERE otime >= minTimeuuid('2015-09-08 01:00:00') AND otime < maxTimeuuid('2015-09-08 02:00:00') AND type=1 LIMIT 500;
我收到错误OperationTimedOut:errors = {}
如果我将句号更改为
SELECT data FROM posts WHERE otime >= minTimeuuid('2015-09-08 00:00:00') AND otime < maxTimeuuid('2015-09-08 10:00:00') AND type=1 LIMIT 500;
我收到的结果没有任何错误。
我已经确认有数据,因为我可以在otime栏报告中看到条目2015-09-08 01:10:06 + 0000
我尝试在查询中包含时区,但我似乎能够检索数据的唯一方法是增加周期或查看较旧的时间帧。
我已经运行nodetool修复并将cassandra升级到最新版本以及opscenter,认为这与ops中心有关,因为我现在无法配置修复服务但是我正在处理那个。
output.log或system.log
中没有错误我已经从python驱动程序和cqlsh中确认了这一点。
对于python驱动程序,我已经增加了超时,认为它正在检索大量数据并将其设置为90并且还在cassandra节点本身上重新配置超时都没有成功。
任何想法
答案 0 :(得分:0)
要运行这些查询,您需要更改架构和查询。 Cassandra不会让你在标准之间包括条件(在&gt;和&lt;之后)。 将架构更改为
CREATE TABLE incoming (
id uuid,
otime timeuuid,
data map<text, text>,
type int,
PRIMARY KEY (type, id)
)
查询为
SELECT data FROM incoming WHERE type=1 and otime >= minTimeuuid('2015-09-08 01:00:00') AND otime < maxTimeuuid('2015-09-08 02:00:00') LIMIT 500;