【问题标题】:What is best possible way out to sort records by aggregate value in Cassandra?在 Cassandra 中按聚合值对记录进行排序的最佳方法是什么?
【发布时间】:2018-09-03 14:15:49
【问题描述】:

我有以下汽车生产数据的数据模型。

CREATE TABLE IF NOT EXISTS mytable (
        date date,
        color varchar,          
        modelid varchar,
        PRIMARY KEY ((color), date, modelid)
    )WITH CLUSTERING ORDER BY (date desc);

我想按 cassandra 中的总列对其进行排序,我希望生成如下:

SELECT color, count(*) AS total 
FROM cars 
WHERE date<='2017-12-07' AND date >'2017-11-30' 
GROUP BY color 
ORDER BY total 
ALLOW FILTERING;

但是当我知道 Cassandra 只支持通过聚类列进行排序并且我无法在表中保留聚合值时,最好的方法是进行这种排序?

【问题讨论】:

  • 我建议通过 Cassandras 驱动程序而不是 cqlsh 来执行此任务。例如,您在需要的一段时间内读取所有数据,然后手动对其进行排序。但是如果您有大量价值数据,请遵循@alex-ott 提出的解决方案

标签: cassandra cql cassandra-3.0 cql3


【解决方案1】:

第一件事-您使用的查询非常无效-通过使用ALLOW FILTERING,您正在对所有服务器上的数据执行扫描-这可能适用于小型数据集,但不适用于大型数据集。您需要围绕您计划执行的查询对表进行建模。

提出您的问题 - 您需要使用 Spark 来执行此操作,或者在您的应用程序中进行排序。

您不应该将 Cassandra 视为类似 SQL 的数据库 - 要使用它,您需要遵循一些关于数据建模、查询等的规则。我建议您参加 DataStax 学院的DS220 课程,以了解为卡桑德拉。

【讨论】:

    猜你喜欢
    • 2011-11-22
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 2013-07-07
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多