phpcassa:cassandra notFoundException实例化列级类



我正在尝试使用phpcassa libraray查询Cassandra 2.0.2服务器。

我做以下操作:

<?php
require('phpcassa/lib/autoload.php');
use phpcassaColumnFamily;
use phpcassaColumnSlice;
use phpcassaConnectionConnectionPool;
$pool = new ConnectionPool('Cronnection', array('MY_SERVER_IP:9160'));
$conversations = new ColumnFamily($pool, 'conversations');
var_dump( $conversations->get('2521b0f0-8e36-11e3-a489-8f038e859082') );

当我这样做时,我会得到一个未被发现的" cassandra notfoundException"例外。

在来源中阅读后,我看到这是因为列族'对话'没有被加载到Clougmn家族阵列中由ConnectionPool :: Docition_keyspace()方法。

当我使用以下代码打印" descrip_keyspace"的结果时,我可以看到,我的一个列族中只有一个称为user_profiles,正在加载到我的列家族阵列中。

<?php
require('phpcassa/lib/autoload.php');
use phpcassaColumnFamily;
use phpcassaColumnSlice;
use phpcassaConnectionConnectionPool;
$pool = new ConnectionPool('Cronnection', array('MY_SERVER_IP:9160'));
echo '<pre>';
var_dump($pool->describe_keyspace());

在该密钥空间中定义了6列系列,但phpcassa仅列出" user_profiles";" user_profiles"和其他CFS之间的唯一区别是" user_profiles"正在使用"与紧凑型存储"属性。

关于如何解决这个问题的想法,或者为什么发生这种情况?

谢谢!

ps:我使用cql3通过cqlsh创建了列族,当我使用cassandra-cli"描述"时,我看不到我的列族,只有我提到的" user_profiles",这可以有所相关吗?

是的,这实际上与COMPACT STORAGEcassandra-cli没有显示其他列家族有关。phpcassa和其他基于旧货的客户端(例如cassandra-cli)只能使用CQL3创建的表,如果它们是创建WITH COMPACT STORAGE

简而言之,如果您将使用phpcassa,建议您坚持使用COMPACT STORAGE表。如果您想阅读更多信息,则有一篇有些高级文章说明了节俭,CQL3和紧凑的存储如何结合在一起。

最新更新