我一直困扰着我的问题。为了简化,我将其缩小。
我在Cassandra的一个专栏系列定义为:
CREATE TABLE "Test" (
key text,
column1 text,
value text,
PRIMARY KEY (key, column1)
)
如果我在CQL中运行查询:
select * from "Test" where key in ('12345','34567');
它给了我类似的东西:
key | column1 | value
-----------------------+---
12345 | 764 | 764
12345 | 836 | 836
12345 | 123723 | 123723
12345 | 155863 | 155863
key | column1 | value
-----------------------+---
34567 | 159144 | 159144
34567 | 159869 | 159869
34567 | 160705 | 160705
现在我的问题是如何将每个记录的结果限制为最多2行。 我尝试使用以下但没有工作。
select FIRST 10 'a'..'z' from "Test" where key in ('12345','34567');
- 最新的CQL版本不可用。
select * from "Test" where key in ('12345','34567') limit 2;
- 仅限制总行数,而不是每条记录
答案 0 :(得分:2)
在CQL3中无法获得此类限制。您必须为每个分区运行单独的查询。
如果查询延迟不是您的问题,您始终可以在Cassandra数据库之上安装SparkSQL / Hive,以进行复杂的分析查询,例如原始问题中的查询。您甚至可以缓存这些查询的结果。