使用Cassandra 1.2。我使用CQL 3通过以下方式创建了一个表:
CREATE TABLE foo (
user text PRIMARY KEY,
emails set<text>
);现在我尝试通过pycassa查询数据:
import pycassa
from pycassa.pool import ConnectionPool
pool = ConnectionPool('ks1', ['localhost:9160'])
foo = pycassa.ColumnFamily(pool, 'foo')这给了我
Traceback (most recent call last):
File "test.py", line 5, in <module>
foo = pycassa.ColumnFamily(pool, 'foo')
File "/home/john/src/pycassa/lib/python2.7/site-packages/pycassa/columnfamily.py", line 284, in __init__
self.load_schema()
File "/home/john/src/pycassa/lib/python2.7/site-packages/pycassa/columnfamily.py", line 312, in load_schema
raise nfe
pycassa.cassandra.ttypes.NotFoundException: NotFoundException(_message=None, why='Column family foo not found.')如何才能做到这一点?
发布于 2013-07-10 16:23:16
如果您已经使用CQL3创建了表,并且希望通过基于thrift的客户端访问它们,则必须指定Compact Storage属性。例如:
CREATE TABLE dummy_file_test
(
dtPtn INT,
pxID INT,
startTm INT,
endTm INT,
patID BIGINT,
efile BLOB,
PRIMARY KEY((dtPtn, pxID, startTm))
)with compact storage; 这是我在使用Pycassa访问基于CQL3的列族时必须做的事情
发布于 2013-08-02 01:49:30
我正在使用Cassandra 1.2.8和pycassa 1.9.0以及CQL3进行测试。我能够验证在CQL3中使用CREATE table语句期间使用的“具有紧凑存储”创建的表是否确实使表(列族)对pycassa可见。不幸的是,我无法找到如何更改该表以使“具有紧凑存储”显示在DESCRIBE table命令中。ALTER TABLE WITH语句应该允许您更改该设置,但不允许更改。
要验证结果,只需使用CQL3创建两个表,一个使用紧凑存储,另一个不使用紧凑存储,结果是可重现的。
看起来,要实现声明的目标,需要删除表,然后使用CREATE语句中的"WITH COMPACT STORAGE“选项重新创建表。如果您不想丢失任何数据,那么可以重命名现有表,使用正确的选项创建新的空表,然后将数据移回所需的表中。当然,除非您可以找到如何正确地更改该表,如果可能的话,这会更容易一些。
发布于 2013-01-09 14:23:06
使用CQL3创建的柱族不能使用pycassa使用的Thrift API。
如果你有更多的问题,你可以使用read this。
https://stackoverflow.com/questions/14185291
复制相似问题