如何用一个主键cassandra order by?

How do order by with one primary key cassandra?

我正在尝试使用 cassandra 的按功能排序,但只有一个主键。但是当我尝试创建我的 table 时,这就是 cassandra returns.

CREATE TABLE user_classement
(
    user_name set<text>, 
    score float, 
    PRIMARY KEY (score) 
) WITH CLUSTERING ORDER BY (score DESC);

但是 cassandra 抛出这个错误:

Clustering key columns must exactly match columns in CLUSTERING ORDER BY directive

如果我创建新列时有两个主键,它可以工作,但只有一个主键,我会收到此错误。

你知道是否可以只用一个主键下订单?

primary key 在 Cassandra 中由 partition keyclustering key 组成。 primary key 中的第一部分表示 partition key。因此,在您的示例中, score 是分区键,并且可以对集群键应用排序。如果你有一个像 PRIMARY KEY (score, rank) 这样的主键,那么你可以应用排名排序。对于分区排序,您可以尝试 ByteOrderedPartitioner。但我还没有尝试过,所以不能再评论了。

编辑 1:正如 Aaron 在评论中添加的那样,仅应使用 Murmur3 分区器。 ByteOrderPartitioner 仅用于从旧版本升级的向后兼容性。