gpt4 book ai didi

Cassandra ByteOrderedPartitioner

转载 作者:行者123 更新时间:2023-12-01 09:55:48 24 4
gpt4 key购买 nike

我想在结构如下的表上执行一些范围查询:

CREATE TABLE table(

num int,
val1 int,
val2 float,
val3 text,
...
PRIMARY KEY(num)
)

范围查询应如下所示:
SELECT num, val1, val2 FROM table WHERE num>100 AND num<1000;

我读了这篇文章: Performing range queries for cassandra table现在我在使用 ByteOrderedPartitone 时遇到了问题。

我使用 OPSCenter Web 界面并尝试创建一个新集群。我更改了分区程序并出现以下错误:

错误配置集群:不使用 RandomPartitioner 或 Murmur3Partitioner 时需要 {ip: token} 形式的 token_map 参数

我找不到 token_map 参数。我究竟做错了什么?我还需要做什么才能启用查询?

我希望有人可以帮助我。谢谢!

最佳答案

What am I doing wrong?



您正在使用字节顺序分区器。它的用途已被确定为 Cassandra 反模式……一段时间以来。马特丹尼斯有一个 slideshare presentation on Cassandra Anti-Patterns ,它包含一张关于 BOP 的幻灯片:
Don't use the Byte Ordered Partitioner

因此,虽然上面的幻灯片是为了幽默,但请不要使用字节顺序分区器。它仍然包含在 Cassanra 中,因此那些在 2011 年使用它的人有一个升级路径。 不应使用 BOP 构建新集群。 您应该使用(默认)Murmur3 分区器。

至于如何用Murmur3分区器解决你的问题,你上面链接的问题/答案引用了Patrick McFadin关于 Getting Started With Time Series Data Modeling的文章。 .在那篇文章中,演示了三种建模模式。他们应该能够帮助您提出合适的数据模型。基本上,您可以使用集群键对数据进行排序,然后使用范围查询读取它……而不是通过您当前的分区键。
CREATE TABLE tableorderedbynum(
num int,
val1 int,
val2 float,
val3 text,
someotherkey text,
...
PRIMARY KEY((someotherkey),num)
);

检查您的数据模型,看看您是否可以找到另一个键来帮助分区您的数据。然后,如果您使用另一个键作为分区键并使用 num 作为集群键创建一个查询表(就像我上面的那样);那么这个范围查询将起作用:
SELECT num, val1, val2 
FROM tableorderedbynum WHERE someotherkey='yourvalue' AND num>100 AND num<1000;

关于Cassandra ByteOrderedPartitioner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27939234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com