查询时cassandra操作超时

时间:2015-09-08 08:31:40

标签: cassandra datastax

我有一个非常简单的时间数据集

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节点本身上重新配置超时都没有成功。

任何想法

1 个答案:

答案 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;