限制CQL中每个记录的列

时间:2015-06-01 08:06:29

标签: cassandra cql datastax

我一直困扰着我的问题。为了简化,我将其缩小。

我在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;

- 仅限制总行数,而不是每条记录

1 个答案:

答案 0 :(得分:2)

在CQL3中无法获得此类限制。您必须为每个分区运行单独的查询。

如果查询延迟不是您的问题,您始终可以在Cassandra数据库之上安装SparkSQL / Hive,以进行复杂的分析查询,例如原始问题中的查询。您甚至可以缓存这些查询的结果。