1

Cassandra1.2.0にテーブルがあります。これにはVarIntキーがあります。キーを検索すると、それらが存在することがわかります。

テーブルの説明:

CREATE TABLE u (
key varint PRIMARY KEY,
) WITH COMPACT STORAGE AND
bloom_filter_fp_chance=0.010000 AND
caching='KEYS_ONLY' AND
comment='' AND
dclocal_read_repair_chance=0.000000 AND
gc_grace_seconds=864000 AND
read_repair_chance=1.000000 AND
replicate_on_write='true' AND
compaction={'class': 'SizeTieredCompactionStrategy'} AND
compression={'sstable_compression': 'SnappyCompressor'};

Select key from u limit 10;

12040911

60619595

3220132

4602232

3997404

6312372

1128185

1507755

1778092

4701841

キー60619595の行を取得しようとすると、正常に機能します。

cqlsh:users>uからキーを選択します。ここでkey= 60619595;

60619595

cqlsh:users> select key from u where key = 3997404;

pycassaを使用してテーブル全体を取得すると、行にアクセスできます。

import pycassa
from struct import *
from pycassa.types import *
from urlparse import urlparse
import operator

userspool = pycassa.ConnectionPool('users');
userscf = pycassa.ColumnFamily(userspool, 'u');
users = {}
u = list(userscf.get_range())
for r in u:
users[r[0]] = r[1]
print users[3997404]

正しい結果を返します。

私は何が間違っているのですか?エラーが何であるかわかりません。

どんな助けもいただければ幸いです、

よろしく

マイケル。

PS:私が試してみると、pycassaでそれを言う必要があります:

userscf.get(3997404)

ファイル"test.py"、10行目、userscf.get(3997404)ファイル "/usr/local/lib/python2.7/dist-packages/pycassa/columnfamily.py"、655行目、get raise NotFoundException() pycassa.cassandra.ttypes.NotFoundException:NotFoundException(_message = None)

平均よりも小さいIntにあるようです。

4

2 に答える 2

0

CQLとThriftベースのクエリを混合していますが、これらは常にうまく混合するとは限りません。CQLは基になるストレージ行を抽象化しますが、Thriftはそれらを直接処理します。

于 2013-02-23T17:59:49.013 に答える
0

これは私たちのプロジェクトで抱えている問題です。私はそれを追加する必要がありました

uからキーを選択します。ここでkey=3997404; cqlsh:users>

cqlshでuから*を選択した場合、またはpycassaでテーブル全体を取得した場合でも、0の結果が返されます。キー3997404の行が表示されます。

混乱させて申し訳ありません。

よろしく

D。

于 2013-02-24T09:30:52.963 に答える