1

我们在 Cassandra 1.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> select key from u where 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)

它似乎在小于平均值的整数中。

4

2 回答 2

0

您正在混合 CQL 和基于 Thrift 的查询,它们并不总是混合得很好。CQL 抽象底层存储行,而 Thrift 直接处理它们。

于 2013-02-23T17:59:49.013 回答
0

这是我们在项目中遇到的问题。我应该补充说

从 u 中选择键,其中键 = 3997404;cqlsh:用户>

返回 0 结果,即使当在 cqlsh 中从 u 中选择 * 或在 pycassa 中获取整个表时,我们也会看到键为 3997404 的行。

对困惑感到抱歉。

问候

D.

于 2013-02-24T09:30:52.963 回答