2016-04-13 40 views
0

Cassandra'nın sütun ailesindeki "satırlar" python sürücüsünü daha etkili bir şekilde nasıl sayar? satır saymakCassandra'nın sütun ailesindeki 'satırlar' sayma python sürücüsü

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 
+0

I (sonuç) 'result' ama' sayısı = len deneyin nesnenin ne tür emin değilim '. – armatita

+0

neden 'select count (*)' u ks1.t1'den kullanmıyorsunuz? – mikea

cevap

0

Korkunç şekilde: kod aşağıdaki kullanın. Temelde tam bir tablo taraması yapıyorsunuz.

Bir dağıtılmış sistemdeki tam satırları saymak zor.

Sen kesinlikle olması gerekiyorsa nodetool tablestats/cfstats


kullanılarak bölümlerin sayısı tahmini (Tablonuzdaki kümeleme sütunlar yoksa bölüm == satır) olabilir

Satır sayısının kesin bir sayısı, Spark bellekteki tüm verileri yerel olarak almak için birlikte bulunan Spark yüklemesini kullanın ve ardından Spark ile birlikte sayın. Bu sayede sayım dağıtılacak ve koordinatöre zarar vermeyecektir.

örnek scala kodu:

import com.datastax.spark.connector._ 

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

Evet, çok uzun, ama tam olarak bilmem gerek. – Dimaf

0

Brian Hess tek başına bir 'cassandra-sayımı' vardır.

Bir Cassandra tablosundaki kayıt sayısını saymak için basit bir program. Jeton aralığını numSplits parametresini kullanarak bölerek, her bir sorgu sayımını azaltabilir ve zaman aşımı olasılığını azaltabilirsiniz.

Spark, bu işlem için çok uygundur, ancak bu programın hedefi, Spark gerektirmeyen basit bir yardımcı programdır. Python Bunu başarmak için, neden takip etmiyor

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

+0

Teşekkürler. Bu programı gördüm, Python kullanarak bir çözüm bulmak istiyorum. – Dimaf

0

:

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) 
İlgili konular