Количество строк семейства столбцов в Кассандре - PullRequest
45 голосов
/ 23 декабря 2009

Есть ли способ получить количество строк (количество ключей) для семейства из одного столбца в Кассандре? get_count может использоваться только для подсчета количества столбцов.

Например, если у меня есть семейство столбцов, содержащее пользователей, и я хочу получить количество пользователей. Как я мог это сделать? У каждого пользователя есть свой ряд.

Ответы [ 6 ]

38 голосов
/ 22 января 2013

Если вы работаете с большим набором данных и хорошо справляетесь с хорошим приближением, я настоятельно рекомендую использовать команду:

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

Строка «Количество ключей (оценка)» является хорошим предположением для всего кластера, и производительность намного выше, чем подходы с явным подсчетом.

6 голосов
/ 23 декабря 2009

Если вы используете разделитель, сохраняющий порядок, вы можете сделать это с помощью get_range_slice или get_key_range.

Если нет, вам нужно будет хранить свои идентификаторы в специальной строке.

5 голосов
/ 28 мая 2013

Я нашел отличную статью об этом здесь .. http://www.planetcassandra.org/blog/post/counting-keys-in-cassandra

выберите количество (*) из предела ср. 1000000

Вышеприведенное утверждение можно использовать, если у нас есть приблизительная верхняя граница, известная ранее. Я нашел это полезным для моего случая.

2 голосов
/ 30 августа 2010

[Редактировать: Этот ответ устарел по состоянию на Cassandra 0.8.1 - см. Запись Счетчики в вики Cassandra, чтобы узнать, как правильно обращаться со столбцами счетчиков в Cassandra.]

Я новичок в Кассандре, но я много перепутал с Google App Engine. Если нет другого решения, вы можете рассмотреть возможность хранения отдельного счетчика на платформе, которая поддерживает атомарные операции приращения, такие как memcached. Я знаю, что Cassandra работает над функцией увеличения / уменьшения атомного счетчика, но она еще не готова к прайм-тайму.

Я могу опубликовать только одну гиперссылку, потому что я новичок, поэтому для получения информации о поддержке счетчиков см. Ссылку в моем комментарии ниже.

Обратите внимание, что этот поток предлагает ZooKeeper, memcached и redis в качестве возможных решений. Мое личное предпочтение будет memcached.

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

0 голосов
/ 15 ноября 2011

Всегда есть карта / уменьшение, но это, вероятно, само собой разумеется. Если у вас это есть с помощью hive или pig, то вы можете сделать это для любой таблицы в кластере, хотя я не уверен, что трекеры знают о местонахождении cassandra, и поэтому может потребоваться потоковая передача всей таблицы по сети, чтобы вы могли отслеживать задачи на cassandra. узлы, но данные, которые они получают, могут быть от другого узла Кассандры :(. Я хотел бы услышать, если кто-нибудь знает наверняка.

ПРИМЕЧАНИЕ. Мы устанавливаем карту / уменьшение на Кассандре в основном потому, что если мы хотим получить индекс позже, мы можем отобразить / уменьшить индекс на Кассандру.

0 голосов
/ 23 декабря 2009

После того, как я преобразовал данные в хеш-код в PHP, я получил вот такое количество.

...