【发布时间】:2014-04-11 04:50:56
【问题描述】:
我正在尝试连接到 Cassandra 以进行批量插入。但是,当我尝试连接时,出现错误。
我正在使用的代码:
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')
但是这在最后一行失败了:
pycassa.cassandra.ttypes.NotFoundException: NotFoundException(_message=None, why='Column family my_table not found.')
列族肯定存在:
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 };
【问题讨论】:
-
你使用的是什么版本的 casssandra?
-
@Drewness Cassandra 2.0.5
-
my_table是使用紧凑型存储创建的吗? -
@Drewness 我没有具体说明。 (至少,我认为我没有这样做。)我添加了大致用于创建表的 CQL 语句,省略了一些列。
-
试试
) WITH COMPACT STORAGE;