如何用一个主键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 key
和 clustering key
组成。 primary key
中的第一部分表示 partition key
。因此,在您的示例中, score
是分区键,并且可以对集群键应用排序。如果你有一个像 PRIMARY KEY (score, rank)
这样的主键,那么你可以应用排名排序。对于分区排序,您可以尝试 ByteOrderedPartitioner
。但我还没有尝试过,所以不能再评论了。
编辑 1:正如 Aaron 在评论中添加的那样,仅应使用 Murmur3 分区器。 ByteOrderPartitioner 仅用于从旧版本升级的向后兼容性。
我正在尝试使用 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 key
和 clustering key
组成。 primary key
中的第一部分表示 partition key
。因此,在您的示例中, score
是分区键,并且可以对集群键应用排序。如果你有一个像 PRIMARY KEY (score, rank)
这样的主键,那么你可以应用排名排序。对于分区排序,您可以尝试 ByteOrderedPartitioner
。但我还没有尝试过,所以不能再评论了。
编辑 1:正如 Aaron 在评论中添加的那样,仅应使用 Murmur3 分区器。 ByteOrderPartitioner 仅用于从旧版本升级的向后兼容性。