【问题标题】:Select all rows from cassandra having created_on in a given range从 cassandra 中选择在给定范围内具有 created_on 的所有行
【发布时间】:2020-04-13 21:19:35
【问题描述】:

我有一个 cassandra 表,其结构如下:

CREATE TABLE testKeySpace.table1 (
    field1 text,
    field2 text,
    field3 text,
    field4 text,
    id uuid,
    created_on timestamp,
    updated_on timestamp,
    PRIMARY KEY ((field1, field2, item_id), field3, field4)
) WITH CLUSTERING ORDER BY (field3 ASC, field4 ASC)

随着时间的推移添加了数据。而在最近的需求中,我必须根据 created_on 从这个表中获取数据。

获取查询是这样的:给定 2 个时间戳 t1 和 t2,我必须获取在 t1 和 t2 之间创建的所有行。

现在我正在使用以下查询来获取所有这些数据:

select * from testKeySpace.table1 where created_on >= t1 and created_on <=t2;

这给了我以下错误: InvalidRequest: Error from server: code=2200 [Invalid query] message="Predicates on non-primary-key columns (created_on) are not yet supported for non secondary index queries

我尝试过的: Another Question on stackoverflow

我使用查询在 created_on 上添加了索引:CREATE INDEX indexKey ON testKeySpace.table1 (created_on);

仍然没有成功。我遇到了同样的错误。 有人能帮我一下吗。我来自sql域,对cassandra没有太多了解。

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    Cassandra 不能以这种方式工作 - 您只能在集群列上执行范围查询,并且在有限的情况下 - 通常这是在单个分区内完成的。二级索引为您提供了执行查询的能力,但仅限于精确值,而不是值范围。 SASI 中对范围查询有非常实验性的支持,但它非常有问题,不推荐使用。

    如果您使用的是 DataStax Enterprise (DSE),那么您可以在该列上创建 DSE 搜索索引,您将获得必要的功能。如果您没有 DSE,那么您可以通过 Spark 进行此类查询,但速度会非常慢,因为您需要从数据库中加载所有数据来执行数据过滤。

    我建议参加DataStax Academy 上的 DS201 课程以了解 Cassandra 的工作原理,并参加 DS220 课程以了解如何在 Cassandra 中对数据进行建模(提示:Cassandra 中的数据模型从将在该数据上执行的查询开始)。

    【讨论】:

    • 我使用的是 apache Cassandra,所以 DSE 不是一个选项。其次,正如您所建议的,要使用 Spark 进行查询,我认为会有更多的开销。我可以自己使用限制偏移和处理数据。我应该使用 spark 而不是手动处理吗?
    • 有效扫描大量数据并非易事。您当然可以这样做:github.com/alexott/dse-playground/blob/master/driver-1.x/src/… - 它使用与 Spark 相同的方法。但 Spark 会让您更轻松地并行化数据处理......
    • 目前,最好的解决方案是将此列添加到聚类列中。强迫我创建新表,复制数据,然后可以执行这种类型的范围查询。无论如何,探索所有这些选项真是太好了。
    • 是的,如果您将此列作为第一个集群列,那么您将能够将过滤推送到 Cassandra 端,尽管您仍然需要进行全表扫描
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多