卡桑德拉一列家族的行数

有一种方法可以获得Cassandra中单个列族的行数(键数)吗? get_count只能用于获取列数。

例如,如果我有一个列家庭包含用户,并希望获得用户数量。 我怎么能这样做? 每个用户都是自己的行。

如果你正在处理一个大的数据集,并且有一个相当不错的近似值,我强烈build议使用下面的命令:

nodetool --host <hostname> cfstats 

这将为每个列族转储一个列表,如下所示:

 Column Family: widgets SSTable count: 11 Space used (live): 4295810363 Space used (total): 4295810363 Number of Keys (estimate): 9709824 Memtable Columns Count: 99008 Memtable Data Size: 150297312 Memtable Switch Count: 434 Read Count: 9716802 Read Latency: 0.036 ms. Write Count: 9716806 Write Latency: 0.024 ms. Pending Tasks: 0 Bloom Filter False Postives: 10428 Bloom Filter False Ratio: 1.00000 Bloom Filter Space Used: 18216448 Compacted row minimum size: 771 Compacted row maximum size: 263210 Compacted row mean size: 1634 

“键数(估计)”行在整个集群中是一个很好的猜测,性能比显式计数方法快得多。

如果您正在使用保留顺序的分区程序,则可以使用get_range_slice或get_key_range执行此操作。

如果你不是,你将需要存储你的用户id在一个特殊的行。

我在这里find了一篇很好的文章.. http://www.planetcassandra.org/blog/post/counting-keys-in-cassandra

从cf限制1000000中selectcount(*)

如果我们手边有一个近似的上界,可以使用上面的语句。 我发现这对我的情况有用。

[编辑:这个答案是过时的Cassandra 0.8.1 – 请参阅Cassandra Wiki中的计数器条目 ,以正确处理Cassandra中的计数器列。]

我是Cassandra的新手,但是我用Google的App Engine搞砸了很多。 如果没有其他解决scheme出现,您可以考虑在支持primefaces增量操作(如memcached)的平台中保留一个单独的计数器。 我知道Cassandra正在处理primefaces计数器的递增/递减function,但还没有准备好黄金时段。

我只能发布一个超链接,因为我是新手,所以为了进步柜台支持,请参阅下面我的评论中的链接。

请注意,此线程build议将ZooKeeper,memcached和redis作为可能的解决scheme。 我个人的偏好会被memcached。

http://www.mail-archive.com/user@cassandra.apache.org/msg03965.html

总有地图/减less,但可能不言而喻。 如果你有蜂窝或猪,那么你可以在集群中的任何表上做,虽然我不确定任务执行者是否知道cassandra的位置,所以它可能需要在整个networking上stream动整个表,所以你得到任务跟踪器在卡桑德拉节点,但他们收到的数据可能来自另一个cassandra节点:(我很想听听有没有人知道。

注意:我们在cassandra上设置map / reduce主要是因为如果我们稍后需要一个索引,我们可以将其映射成cassandra。

在将数据转换为PHP中的散列之后,我已经得到了这样的计数。