如何 Select Cassandra DB 中的第 N 行 Table

How to Select Nth Row in Cassandra DB Table

我需要 select 来自 cassandra table 的第 N 行,基于我从我的逻辑中得到的特定数字。即:如果逻辑输出是 23 表示,我需要获取第 23 行的详细信息。由于 cassandra 中没有自动增量,我无法使用 ID 密钥匹配。在 SQL 他们使用 OFFSET 和 LIMIT 得到它。我不知道如何在 Cassandra 中实现这一目标。 我们可以通过使用任何 UDF 概念来实现吗???有人提前回复我solution.Thanks

Table 架构:

CREATE TABLE new_card ( 
    customer_id bigint, 
    card_number text, 
    active tinyint, 
    auto_pay int, 
    available_credit_limit double, 
    average_card_spend_half_yearly double, 
    average_card_spend_monthly double, 
    average_card_spend_quarterly double, 
    average_card_spend_yearly double, 
    avg_half_yearly_spend_mcc double,
    PRIMARY KEY (customer_id, card_number) 
);

如果您使用的是Java驱动程序,请参考Paging

注意,Cassandra 不支持直接偏移,页面是按顺序读取的。如果您必须在查询中使用偏移量,您可能需要重新访问您的数据模型。您可以创建一个包含行号的复合分区键作为现有分区键列之上的附加列。

您根本无法从 table 中 select N 行,因为 Cassandra table 是由分区组成的,您可以在分区内对行进行排序,但不能在分区内排序。使用分页将抛出所有 tables,但是使用 suck 方法 selected 的行不会按时间顺序排列(忽略分区在执行 go-throw 时可能会更改的事实-页的东西)。

如果你想select从Cassandra获取行号N,你需要在应用层实现自增字段,并把它作为key。

有一些方法可以使用 Cassandra 来做到这一点,例如使用轻量级事务,但从性能角度来看,它的成本很高。在这里查看几个解决方案:

How to create auto increment IDs in Cassandra