限制 CQL 中每条记录的列数

Limiting columns per record in CQL

我有一个问题困扰了我很久。为了简化,我正在缩小它。

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

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

CQL3 中没有这种类型的限制。您必须 运行 每个分区的单独查询。

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