2014-10-28 3 views
24

이것은 기본적인 질문이지만 실제로 며칠 동안 나를 괴롭 히고 있습니다. 카산드라의 주어진 테이블에 해당하는 COUNT(*)을 얻을 수있는 좋은 방법이 있습니까?Cassandra 테이블의 행 수를 얻는 방법

몇 가지로드 테스트를 위해 수억 개의 행을 C *로 옮길 것이며 네트워크를 통해 방대한 양의 데이터를 이동하기 전에 일부 샘플 ETL 작업에 행 수를 얻고 싶습니다.

내가 가진 가장 좋은 아이디어는 기본적으로 파이썬으로 각 행을 반복하고 카운터를 자동 증가시키는 것입니다. C * 테이블의 행 크기를 결정 (또는 예측)하는 더 좋은 방법이 있습니까? 또한 Datastax Ops Center에서 행 크기를 결정할 수 있는지 살펴 보았습니다. 가능한 경우 어떻게 될지 모르겠습니다.

C *에서 count(*) 테이블을 가져 오는 데 필요한 사람은 누구입니까? 그렇다면 어떻게 그 일을 시작 했습니까?

+0

볼 특정 테이블 http://stackoverflow.com/questions/1951843/row-count-of-a-column-family-in-cassandra –

답변

27

예, COUNT(*)을 사용할 수 있습니다. 다음은 documentation입니다.

COUNT (*)를 사용하는 SELECT 식은 쿼리와 일치하는 행 수를 반환합니다. 또는 COUNT (1)을 사용하여 동일한 결과를 얻을 수 있습니다. 당신이 정확한 수를 (이 값은 추정치)가 필요하지 않은 경우

SELECT COUNT(*) FROM users; 
+0

내가 curiius 해요위한

nodetool tablestats <keyspace.table> 당신의 카운트가 걸립니다. 어쩌면 다시보고 할 수 있습니다. :) –

+3

와우. 나는 바보 야. 어떻게 내가 그 문서에서 그것을 놓쳤을까요? – evanv

+40

네 차례 야. 우리 모두 바보가되는 방향으로 돌입니다. 내꺼 내일 올거야. 기다릴 수 없어. 벤치 마크 관점에서 보면 –

5

당신은 또한 nodetool cfhistograms에서 일부 추정치를 얻을 수 있습니다 :

은 사용자 테이블의 행의 수를 계산합니다.

DSE를 실행하는 경우 spark를 사용할 수도 있습니다.

+0

어떻게 Spark을 사용하여 카운트를 더 빨리 할 수 ​​있습니까? 예를 들어 약 10 억 개의 레코드가 있고 스파크를 사용하여 행 수를 계산합니다. 그것을 완료하는 데 1 시간 30 분이 걸렸습니다. 여기에 자세한 내용이 있습니다 http : // stackoverflow.co.kr/questions/40778936/apache-spark-sql-take-forever-to-billion-rows-from-cassandra/40781384? noredirect = 1 # comment68807487_40781384 – user1870400

1

nodetool tablestats은 행 견적 (및 다른 테이블 통계)을 빠르게 얻을 수 있습니다. 시간을 다시들을 수

관련 문제