Comment obtenir le nombre de lignes dans la table Cassandra

C'est une question super basique mais ça m'embête depuis des jours. Est-il un bon moyen pour obtenir l'équivalent d'un COUNT(*) du tableau de Cassandra?

Je vais déplacer plusieurs centaines de millions de lignes en C* pour certains tests de charge et j'aimerais au moins obtenir un nombre de lignes sur certains exemples de travaux ETL avant de déplacer des quantités massives de données sur le réseau.

La meilleure idée que j'ai est de faire une boucle sur chaque ligne avec Python et d'incrémenter automatiquement un compteur. Existe-t-il un meilleur moyen de déterminer (ou même d'estimer) la taille de ligne d'une table C*? J'ai également fouillé autour de Datastax Ops Center pour voir si je peux déterminer la taille de la ligne là-bas. Si vous le pouvez, Je ne vois pas comment c'est possible.

Quiconque nécessaire pour obtenir un count(*) d'un tableau en C*? Si oui, comment feriez-vous pour faire cela?

31
demandé sur evanv 2014-10-29 02:13:55

6 réponses

Oui, vous pouvez utiliser COUNT(*). Voici la documentation .

Une expression SELECT utilisant COUNT(*) renvoie le nombre de lignes correspondant à la requête. Vous pouvez également utiliser COUNT(1) pour obtenir le même résultat.

Comptez le nombre de lignes dans la table users:

SELECT COUNT(*) FROM users;
38
répondu catpaws 2016-06-14 08:15:57

Vous pouvez également obtenir des estimations à partir de nodetool cfhistograms si vous n'avez pas besoin d'un compte exact (ces valeurs sont des estimations).

Vous pouvez également utiliser spark si vous utilisez DSE.

9
répondu phact 2016-08-27 01:00:43

nodetool tablestats peut être très pratique pour obtenir rapidement des estimations de ligne (et d'autres statistiques de table).

nodetool tablestats <keyspace.table> pour une table spécifique

3
répondu Lucian Thorr 2017-07-13 14:06:08

Vous pouvez utiliser copy pour éviter le délai d'attente de cassandra qui se produit généralement sur count (*)

cqlsh -e "copy keyspace.table_name (first_partition_key_name) to '/dev/null'" | sed -n 5p | sed 's/ .*//'

0
répondu Shubham 2018-08-23 11:53:11

Pour ceux qui utilisent L'Adaptateur de Composant C # Linq, vous pouvez utiliser:

var t = new Table<T>(session);
var count = t.Count().Execute();
0
répondu Crunchy234 2018-08-28 02:09:16

Nodetool cfstats / grep-a 1000 KEYSPACE

Remplacez L'espace de clés pour obtenir les détails de toutes les tables de cet espace de clés

-3
répondu Vaibhav 2018-08-14 09:38:35