47

Cassandra で単一の列ファミリーの行数 (キー数) を取得する方法はありますか? get_count は、列数を取得するためにのみ使用できます。

たとえば、ユーザーを含む列ファミリーがあり、ユーザー数を取得したいとします。どうすればできますか?各ユーザーは独自の行です。

4

6 に答える 6

39

大規模なデータセットで作業していて、かなり良い近似で問題ない場合は、次のコマンドを使用することを強くお勧めします:

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

"Number of Keys (estimate)" 行はクラスター全体で適切な推測であり、パフォーマンスは明示的なカウント アプローチよりもはるかに高速です。

于 2013-01-21T21:04:19.870 に答える
6

順序を維持するパーティショナーを使用している場合は、get_range_slice または get_key_range を使用してこれを行うことができます。

そうでない場合は、ユーザー ID を特別な行に保存する必要があります。

于 2009-12-23T15:05:43.937 に答える
2

[編集: この回答は、Cassandra 0.8.1 の時点では古くなっています。Cassandra でカウンター列を処理する正しい方法については、Cassandra Wikiのカウンター エントリを参照してください。]

私は Cassandra を初めて使用しますが、Google の App Engine をいじりました。他に解決策がない場合は、memcached などのアトミック インクリメント操作をサポートするプラットフォームに別のカウンターを保持することを検討してください。Cassandra がアトミック カウンターのインクリメント/デクリメント機能に取り組んでいることは知っていますが、まだ準備万端ではありません。

私は新しいので、ハイパーリンクを 1 つしか投稿できません。カウンター サポートの進捗状況については、以下のコメントのリンクを参照してください。

このスレッドでは、ZooKeeper、memcached、および redis が可能な解決策として提案されていることに注意してください。私の個人的な好みは memcached です。

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

于 2010-08-29T21:36:55.193 に答える
0

map/reduce は常にありますが、それはおそらく言うまでもありません。ハイブまたはブタでそれを行う場合、クラスター全体の任意のテーブルに対して実行できますが、タスクトラッカーがカサンドラの局所性を認識しているとは確信していないため、ネットワーク全体でテーブル全体をストリーミングする必要がある場合があるため、カサンドラでタスクトラッカーを取得しますノードですが、受信するデータは別のcassandraノードからのものである可能性があります:(.誰かが確かに知っているかどうか聞いてみたい.

注: cassandra で map/reduce をセットアップしているのは、主に、後でインデックスが必要な場合に、インデックスを cassandra にマップ/リデュースできるためです。

于 2011-11-14T23:51:55.237 に答える
-3

PHPでデータをハッシュに変換した後、このようなカウントを取得しています。

于 2009-12-23T14:41:09.673 に答える