相关疑难解决方法(0)

cassandra获得时间范围内的所有记录

我必须使用以(user_id,timestamp)为键的列族.在我的查询中,我想获取给定时间范围内的所有记录,与user_id无关.这是确切的表模式:

CREATE TABLE userlog (
  user_id text,
  ts timestamp,
  action text,
  app_type text,
  channel_name text,
  channel_session_id text,
  pid text,
  region_id text,
  PRIMARY KEY (user_id, ts)
)
Run Code Online (Sandbox Code Playgroud)

我试着跑

SELECT * FROM userlog  WHERE ts >= '2013-01-01 00:00:00+0200' AND  ts <= '2013-08-13 23:59:00+0200' ALLOW FILTERING;
Run Code Online (Sandbox Code Playgroud)

这在我的本地cassandra安装中工作正常,包含一个小数据集,但失败了

Request did not complete within rpc_timeout.
Run Code Online (Sandbox Code Playgroud)

在包含所有数据的生产系统上.

是否有一个,最好是cql,查询与给定的列系列顺利运行或de我们必须更改设计?

cql cassandra

27
推荐指数
2
解决办法
6万
查看次数

如何在cassandra中构建范围查询?

CREATE TABLE users ( 
userID uuid, 
firstname text, 
lastname text, 
state text, 
zip int,
age int,
PRIMARY KEY (userID) 
);
Run Code Online (Sandbox Code Playgroud)

我想构造以下查询:

select * from users where age between 30 and 40

select * from users where state in "AZ" AND "WA"
Run Code Online (Sandbox Code Playgroud)

我知道我需要两个表来执行此查询但我不知道应该如何?

编辑

从卡罗的评论中,我发现这是唯一的可能性

CREATE TABLE users ( 
userID uuid, 
firstname text, 
lastname text, 
state text, 
zip int,
age int,
PRIMARY KEY (age,zip,userID) 
);
Run Code Online (Sandbox Code Playgroud)

现在选择年龄在15到30之间的用户.这是唯一的可能性:

select * from users where age IN (15,16,17,....30)
Run Code Online (Sandbox Code Playgroud)

但是,不建议在此使用IN运算符,并且是反模式.

如何在年龄上创建二级指数?

CREATE index users_age ON users(age) …
Run Code Online (Sandbox Code Playgroud)

cql cql3 cassandra-2.0

7
推荐指数
1
解决办法
1万
查看次数

从 Cassandra 并行读取数据的最佳方式是什么?

我是 Cassandra 的新手,我正在尝试弄清楚应该如何存储数据,以便能够并行执行快速读取。我读过,分区数据会带来性能问题?是否可以并行从同一分区中的 Cassandra 表读取数据?

cassandra

3
推荐指数
1
解决办法
4198
查看次数

标签 统计

cassandra ×2

cql ×2

cassandra-2.0 ×1

cql3 ×1