Search code examples
nosqlcassandrapycassa

Cassandra - Get on CF with key returning 0 results, but key exists when retrieving whole table using pycassa


We have a table in Cassandra 1.2.0. That has an VarInt key. When we search keys we can see that they exist.

Table description:

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;

key

12040911

60619595

3220132

4602232

3997404

6312372

1128185

1507755

1778092

4701841

When I try and get the row for key 60619595 it works fine.

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

key

60619595

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

When I use pycassa to get the whole table I can access the row.

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]

returns the correct result.

What am I doing wrong? I cannot see what the error is.

Any help would be appreciated,

Regards

Michael.

PS: I should say that in pycassa when I try:

userscf.get(3997404)

File "test.py", line 10, in userscf.get(3997404) File "/usr/local/lib/python2.7/dist-packages/pycassa/columnfamily.py", line 655, in get raise NotFoundException() pycassa.cassandra.ttypes.NotFoundException: NotFoundException(_message=None)

It seems to be in Ints that are smaller than the average.


Solution

  • You are mixing CQL and Thrift-based queries, which do not always mix well. CQL abstracts the underlying storage rows, whereas Thrift deals directly with them.