cassandra - 如果电话号码用作表的主键,scylla/cassandra 集群上的读/写操作是否会发生偏斜?

标签 cassandra scylla

我正在运行一个 Spark 作业,该作业填充 scylla 中的一个表。表中的主键是长类型,它本质上包含电话号码。如果说这个字段的潜在值(value),肯定不会统一,因为大多数电话号码都集中在9-12位数字之间。

对于我的 scylla 配置,它是一个具有 3 个节点、复制因子为 3 的单个集群。我的问题是,由于主键本身是倾斜的,所以读/写操作会在每个节点上倾斜,还是 scylla 在对主键进行哈希处理后会选择节点哪个键可以使操作统一?

我发现特定节点的操作数量有时会跳跃,但我希望在采取任何步骤之前能够 100% 确定。

最佳答案

分区的节点由主键的 Murmur3 哈希确定。

例如,电话号码 920-458-3834 被哈希为 3485763808729355786 的 token ,并最终被写入负责 token 范围的节点包括3485763808729355786

也许下一个电话号码与之前的电话号码类似,例如 920-458-3835。它被散列为 -6305759902789073081,并且在大型集群中可能会被写入不同的节点。

seen that number of operations sometimes jump for a particular node

不确定集群或应用程序设置,但这可能是协调器节点。

关于cassandra - 如果电话号码用作表的主键,scylla/cassandra 集群上的读/写操作是否会发生偏斜?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77000284/

相关文章:

text - Cassandra WHERE - 比较不区分大小写

python - 将 Cassandra CQL3 与 Python Web 框架结合使用

Cassandra 节点丢失

cassandra - 与 Bigtable 相比,Cassandra 数据模型中关于列族的概念差异?

scylla - 是否有用于 scylla nodetool 的 API?

cassandra - RHEL 和 CentOS 上的 Scylla 安装问题

java - 在cassandra中动态添加列

cassandra - 使用 Solr 集成时,DSE 创建的 Cassandra 索引的性质是什么?

networking - Google Compute Engine 是否提供 SR-IOV(单根 I/O 虚拟化)?

gocql Query.Get() 与 Query.GetRelease()