2016-10-17 46 views
-1

当我在卡桑德拉像这样的表:卡桑德拉选择上表计数器where子句

CREATE TABLE大写金额( ID INT, 日期时间戳, countValue计数器, PRIMARY KEY((ID) ,日期));

我知道分区键的如下声明:Difference between partition key, composite key and clustering key in Cassandra? 但计数器不能是主键的一部分。 现在我想查询基于countValue例如像这样:

SELECT * from amount WHERE countValue > 10; 

当然,这会给一个未定义的名称例外。但有没有可能实现这样的查询,而不需要像SELECT * FROM amount;这样的事情,然后通过数据集?我想获取我需要的数据集。

+0

如果您有DSE(DataStax Enterprise Cassandra),那么您可以使用内置的Solr索引将其关闭。但是没有直接的方法,除了按键之外,不支持计数器扫描。 – Sreekar

+0

@Sreekar我想我会为它使用SQL。在SQL环境旁边有一个非常大的Cassandra数据库,所以它很容易切换。 – Proliges

回答

2

这不是你可以在卡桑德拉做的事情。您将需要使用其他一些过程,例如您建议的客户端过滤。

另一种选择是代替在表中执行计数器,您可以将记录分开保存,并在Spark中进行一些后处理。

+0

好的客户端过滤可能不是执行此操作的最佳方式,我必须在不断增长的数据库中进行选择。也许我会在SQL中这样做,但也许我可以创建一个tabel,其中'countValue'是一个整数。然后,如果我是正确的,我应该能够循环。 – Proliges