gpt4 book ai didi

java - 按部分从 cassandra 获取数据

转载 作者:行者123 更新时间:2023-11-30 02:58:20 24 4
gpt4 key购买 nike

在 cassandra db 中,我有一个包含 1000 万行的表。如果我使用普通的选择查询,我只能有 1 个与 cassandra 的连接来获取数据。是否可以使用行号进行选择查询?

E.g. Select * from abc where row = x to row = y ?

所以我可以有 10 个不同的线程,因此每个线程将负责获取 100 万行。如果可能的话,我的线程数是否应该等于集群中的节点数?

我正在使用 java datastax 驱动程序连接到我的 cassandra 集群。

最佳答案

Is it possible to do select query with row number ?

不,但可以根据分区键的哈希标记值执行范围查询。

假设您有一个六节点集群。 6 节点集群的 Murmur3 主 token 范围如下所示:

node   start range              end range
1) 9223372036854775808 to -9223372036854775808
2) -9223372036854775807 to -5534023222112865485
3) -5534023222112865484 to -1844674407370955162
4) -1844674407370955161 to 1844674407370955161
5) 1844674407370955162 to 5534023222112865484
6) 5534023222112865485 to 9223372036854775807

如果我有一个名为 abc 的表,其分区键为 pkey,并且想要查询节点 2 上该表的所有行,我的查询将如下所示:

SELECT * FROM abc
WHERE token(pkey) > 9223372036854775808
AND token(pkey) <= -5534023222112865485;

如果整行的值太多(我猜它会太多),您可以将标记范围一分为二,直到行数变得可以管理。请记住,选择 1000 万行并不是 Cassandra 设计时特别擅长的事情,因此可能需要进行几次尝试。

至于线程数,这可能也需要一些尝试和错误。但每个节点一个线程听起来像是一个合理的起点。

关于java - 按部分从 cassandra 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36633568/

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