我有一個事件表並希望爲每個用戶提取第一個時間戳(列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