计数'行'在使用python驱动程序的Cassandra列族中

时间:2016-04-13 18:18:39

标签: python count cassandra

如何统计"行"在Cassandra的列族更有效地使用python驱动程序? 我使用以下代码:

from cassandra.cluster import Cluster
from sys import stdout

servers = ['server1', 'server2']
cluster = Cluster(servers)
session = cluster.connect()

result = session.execute('select * from ks1.t1')

count = 0

for i in result:
    count += 1

print count

3 个答案:

答案 0 :(得分:1)

要在Python中实现这一目标,为什么不能实现以下目标:

from cassandra.cluster import Cluster

servers = ['server1', 'server2']
cluster = Cluster(servers)
session = cluster.connect()

result = session.execute('select count(*) from ks1.t1')

count = 0
for row in result: # will only be 1 row
    count += row.count

print(count)

答案 1 :(得分:0)

计算排的可怕方式。基本上你正在进行全表扫描。

要计算分布式系统中的确切行数很难。

您可以使用 nodetool tablestats/cfstats 分区数(分区==行,如果您的表中没有群集列)强>

如果您确实需要精确计算行数,请使用共存的Spark安装在本地获取Spark内存中的所有数据,然后使用Spark计算它们。通过这种方式,计数将被分配,而不是压倒协调员。

示例scala代码:

import com.datastax.spark.connector._

sc.cassandraTable("keyspace", "table_name").count()

答案 2 :(得分:0)

Brian Hess独自站立'cassandra-count'。

  

用于计算Cassandra表中记录数的简单程序。通过使用numSplits参数拆分令牌范围,您可以减少每个查询的计数量并减少超时的可能性。

     

确实,Spark非常适合这种操作,但是   该程序的目标是成为一个不需要的简单实用程序   火花。

https://github.com/brianmhess/cassandra-count