Java Cassandra查询以获取表的最后一行

Java Cassandra查询以获取表的最后一行,java,cassandra-2.0,Java,Cassandra 2.0,谁能帮我找到卡桑德拉最后一张桌子的记录。我希望根据主键获取最后一行。我尝试使用order by作为键,但它仍然显示错误,如使用order by所需的IN或EQ。当我添加IN子句时,它显示错误。请举例说明如何解决这个问题。你不能:) 数据仅通过集群键在分区内部“有序”。假设分区键和所有先前的集群键完全匹配,您可以对集群中的列执行order by查询。换句话说,如果你的PK是(a,b,c),那么你可以在a='asd'和b='cds'之间进行排序,然后在c上进行范围查询 您可以在分区上指定cluste

谁能帮我找到卡桑德拉最后一张桌子的记录。我希望根据主键获取最后一行。我尝试使用order by作为键,但它仍然显示错误,如使用order by所需的IN或EQ。当我添加IN子句时,它显示错误。请举例说明如何解决这个问题。

你不能:)

数据仅通过集群键在分区内部“有序”。假设分区键和所有先前的集群键完全匹配,您可以对集群中的列执行order by查询。换句话说,如果你的PK是(a,b,c),那么你可以在a='asd'和b='cds'之间进行排序,然后在c上进行范围查询

您可以在分区上指定clusterin顺序,因此对于最新的,如果您将集群作为timestamp desc,那么只需选择first将自动给出“last”。例如:

create table timeseries (
  event_type text,
  insertion_time timestamp,
  event blob,
  PRIMARY KEY (event_type, insertion_time)
)
WITH CLUSTERING ORDER BY (insertion_time DESC);
注意,您需要指定分区键(event_type),并且检索到的行将是该分区中的“最新”行

然而,想想在分布式系统中“最新”意味着什么。根据您的用例,“最新”的任何概念都可能过时。这可能是可以接受的,也可能是不可以接受的

如果您正在通过非desc集群键的任意列查找“latest”,那么我建议使用Spark进行类似于快速“map reduce”的计算