我有一个事件表并希望为每个用户提取第一个时间戳(列unixtime
)。 有没有办法用一个Cassandra查询来做到这一点?Cassandra:为索引列的每个值选择第一个条目
架构如下:
CREATE TABLE events (
id VARCHAR,
unixtime bigint,
u bigint,
type VARCHAR,
payload map<text, text>,
PRIMARY KEY(id)
);
CREATE INDEX events_u
ON events (u);
CREATE INDEX events_unixtime
ON events (unixtime);
CREATE INDEX events_type
ON events (type);
谢谢你的回答。我相信存在一个误解:'id'是事件的唯一标识符,但它是包含userid的'u'字段。所以也许你想提出的是'PRIMARY KEY(u,unixtime)'? – fstab
不幸的是,即使在创建'PRIMARY KEY(u,unixtime)'后,我运行查询'select u,unixtime from events ORDER BY u,unixtime;'我得到错误'code = 2200 [Invalid query] message =“只有在分区键被EQ或IN限制时才支持ORDER BY。“关于为什么会发生这种情况的任何想法?谢谢! – fstab
是...排序是通过聚类列完成的。所以你需要打一个分区。如果这是一份报告,请按照我上面的建议使用Spark。 – ashic