我需要根据我从逻辑中获得的特定数字从cassandra表中选择'N'行。即:如果逻辑输出为23表示,我需要获得第23行详细信息。由于cassandra没有自动增量,我无法使用ID键匹配。在SQL中,他们使用OFFSET和LIMIT获取它。我不知道如何在卡桑德拉实现这一目标。 我们可以通过使用任何UDF概念来实现这一点吗?有人回复我的解决方案。谢谢。
表架构:
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)
);
答案 0 :(得分:1)
如果您使用的是Java驱动程序,请参阅Paging
注意,Cassandra不支持直接偏移,页面按顺序读取。如果必须在查询中使用偏移量,则可能需要重新访问数据模型。您可以创建一个复合分区键,包括行号作为现有分区键列之上的附加列。
答案 1 :(得分:1)
您无法从表中选择N行,因为Cassandra表是由分区组成的,您可以在分区内订购行,但不能在分区中订购。使用分页将会抛出所有表,但是没有使用suck方法选择的行的时间顺序(忽略分区可以在你执行go-throw-pages的东西时改变的事实)。
如果要从Cassandra中选择行号N,则需要在应用程序级别实现自动增量字段并将其用作密钥。
使用轻量级交易可以通过Cassandra实现这一目标,但是从性能敏感性来看,它的成本很高。在这里查看几个解决方案: