没有在Cassandra中创建的分区

时间:2017-12-18 12:45:58

标签: cassandra cql

我在Cassandra中创建了一个带有一个分区键(即一个主键)的表,并在其中插入了大约50K条记录,其中35K是唯一记录。

根据规则(如果我错了请纠正我),Cassandra中的分区数应该等于表中的唯一记录(即分区中没有分区=主键中的唯一记录)。

但是我做了节点工具 -

./ nodetool tablestats -H keyspace.tablename

它给了我: -

    Number of keys (estimate partitions key): 7500

,比我矿表中唯一记录的数量少得多。

所以任何人都可以解释这种情况。

3 个答案:

答案 0 :(得分:3)

tablestats仅提供键数的相对大小,而不是确切的大小。 如果您想知道总的唯一行,请运行select count(partition_key_col) from tableName。 执行查询时可能会出现查询超时,在执行查询之前设置cqlsh request-timeout

答案 1 :(得分:2)

如前所述,表中有35k唯一记录。 Cassandra中的唯一记录是(分区键(PK)+聚类列(CC))。 在这里更正您的陈述。分区数=唯一分区键(不是主键(PK + CC)。) 因此,对于同一个分区键,基于集群列,您可能会有多于1行。

这就是为什么您拥有约7.5k唯一分区,并且总体上它将具有唯一35k记录的原因。

https://docs.datastax.com/en/cassandra/3.0/cassandra/tools/toolsTablestats.html#toolsTablestats__example

在这里,如果您阅读了键数(估计)的含义,则表示相同的意思。

答案 2 :(得分:1)

tablestats刷新时刷新。如果手动运行nodetool flush,则应该看到准确的数字。