Python 在pycassa中找不到Cassandra列族
我正在尝试连接到Cassandra以进行大容量插入。然而,当我尝试连接时,我得到了一个错误 我正在使用的代码:Python 在pycassa中找不到Cassandra列族,python,cassandra,pycassa,Python,Cassandra,Pycassa,我正在尝试连接到Cassandra以进行大容量插入。然而,当我尝试连接时,我得到了一个错误 我正在使用的代码: from pycassa import columnfamily from pycassa import pool cassandra_ips = ['<an ip addr>'] conpool = pool.ConnectionPool('my_keyspace', cassandra_ips) colfam = columnfamily.ColumnFamily(
from pycassa import columnfamily
from pycassa import pool
cassandra_ips = ['<an ip addr>']
conpool = pool.ConnectionPool('my_keyspace', cassandra_ips)
colfam = columnfamily.ColumnFamily(conpool, 'my_table')
列族肯定存在:
cqlsh> use my_keyspace
... ;
cqlsh:my_keyspace> desc tables;
my_table
cqlsh:my_keyspace>
我不认为这是一个简单的表名拼写错误,因为我已经检查了十几次,但也因为这个:
In [3]: sys_mgr = pycassa.system_manager.SystemManager(cassandra_ips[0])
In [4]: sys_mgr.get_keyspace_column_families('my_keyspace')
Out[4]: {}
为什么是{}
如果有关系:
- 表/列族是使用CQL创建的
- 该表当前为空
- 该表大致使用以下方法创建:
CREATE TABLE my_table ( user_id int, year_month int, t timestamp, <tons of other attributes> PRIMARY KEY ((user_id, year_month), t) ) WITH compaction = { 'class' : 'LeveledCompactionStrategy', 'sstable_size_in_mb' : 160 };
创建表格我的表格( 用户id int, 年/月整数, t时间戳, 主键((用户id,年/月),t) )压实= {'class':'LeveledCompactionStrategy','sstable_size_in_mb':160};
CREATE TABLE my_table (
...
) WITH COMPACT STORAGE;
对于主键,从:
使用compact storage指令会阻止您定义更多
多个列不是复合主键的一部分
目前您正在使用,但启用压缩存储限制了我们使用复合分区密钥。因此,您将而不是必须将其限制为单个列,它必须是复合键的一部分。最后一个。在创建以大写字母命名的CF后,也可能出现这种情况: 我的命名空间结构非常奇怪,引用了CFs:
cqlsh:testkeyspace> DESC TABLES;
"Tabletest" users "PlayerLastStats"
我在pycassa系统管理器上出错。请创建列族(…)
,但前提是这里有列验证类参数
pycassa.cassandra.ttypes.NotFoundException: NotFoundException(_message=None, why='Column family NewTable not found.')
重命名为小写后,所有表看起来都很好
cqlsh:testkeyspace> DESC TABLES;
tabletest newtable users playerlaststats
您使用的是什么版本的Cassandra?@Drowness Cassandra 2.0.5是用紧凑型存储创建的
my_表
?@Drowness我没有指定。(至少,我不认为我这样做了。)我添加了用于创建表的CQL语句,省略了一些列代码>我的列的其余部分不是我的数据的键的一部分(它们只是普通属性):你怎么说它们可以用作键的一部分?目前你使用的是复合键,((用户id,年月),t)
。因此,您可以排除时间戳,或者将其设置为一个复合键,如(user\u id,year\u month,t)
。
cqlsh:testkeyspace> DESC TABLES;
tabletest newtable users playerlaststats