我们使用分区键在cassandra表中建模我们的数据,让我们说" pk"。我们总共有100个pk的唯一值,我们的簇大小是160.我们使用随机分区器。当我们为所有100个分区向Cassandra(复制因子为3)添加数据时,我注意到这100个分区没有均匀分布。一个节点有多达7个分区,许多节点只有1个或没有分区。鉴于我们使用的是随机分区器,我预计分配会合理均匀。因为7个分区在同一个节点中,所以这为我们创建了一个热门分区。有没有更好的方法来均匀分配分区?
赞赏任何意见。
由于
答案 0 :(得分:2)
我怀疑问题是分区键的基数低。只有100个可能的值,多个值最终散列到相同节点并不出乎意料。
如果您有160个节点,那么只有100个可能的分区键值将意味着您没有有效地使用所有160个节点。数据的均匀分布来自于使用高基数分区密钥插入大量数据。
所以我建议您找出一种方法来增加分区键的基数。一种方法是使用复合分区键,将聚类列或数据字段的某些部分包含在分区键中。
您可能还会考虑切换到Murmur3Partitioner,它通常会提供更好的性能,并且是最新版本的当前默认分区程序。但是你仍然需要解决低基数问题。