【问题标题】:Net Cassandra Easy set keyspaceNet Cassandra 轻松设置键空间
【发布时间】:2012-02-03 18:10:34
【问题描述】:

在启动 Cassandra 服务器和 Cassandra 客户端后,我成功创建了“Keyspace1”,列族“Standard1”。使用 Net-Cassandra-Easy-0.15,我执行了一个 Perl 程序并得到了结果:

$VAR1=bless({
    'why'=>'You have not set a keyspace for this session'
    },'Net::GenCassandra::InvalidrequestException');

你有什么提示可以解决这个问题吗?

我的 Perl 程序如下:

#!/usr/bin/perl

use lib './lib';
use strict;
use warnings;
use Net::Cassandra::Easy;
use Data::Dumper;

eval {
    my $client = Net::Cassandra::Easy->new(
    server => 'localhost',
    port => 9160,
    keyspace => 'Keyspace1');
    $client->connect();
    my $key = 'rt';
    # get
    my $result = $client->get([$key],
        family => 'Standard1',
        byname => [qw/name age site/]);
    print Dumper($result);
    # insert
    $client->mutate([$key],
        family => 'Standard1',
        insertions => { 'site' => 'rest-term' });
    # get
    $result = $client->get([$key],
        family => 'Standard1',
        byname => [qw/name age site/]);
    print Dumper($result);
};
die Dumper($@) if $@;

【问题讨论】:

  • 欲了解更多信息:在此问题发生之前,我收到“无法读取 4 个字节...”错误。我在 Easy.pm 模块中将“BufferedTransport”替换为“FramedTransport”,然后修复了“无法读取 4 个字节...”错误。但是这个“你没有为这个会话设置一个键空间”的错误,我不知道有什么方法可以解决。

标签: perl cassandra


【解决方案1】:

在 CPAN 评论中看到这个:

“如果它被更新,这可能是一个很好的模块,但这个版本太旧而无法使用。看起来这个模块不适用于 5.x 以上的任何版本的 Cassandra。”

你使用的是什么 cassandra 版本?

这个包里有一个test.pl,试运行一下。

我的猜测是您的 Keyspace1 在您的 cassandra 安装中不是有效的密钥空间。你能用一些命令行工具运行这个查询吗?

【讨论】:

  • 我的问题发生在 Cassandra 1.0.7(目前最新)上。我还不知道原因。我更改为 0.7.10 版本并将 Thrift0.7.0 与 gen-perl 一起使用(不再使用 Easy),它现在运行良好。谢谢!
猜你喜欢
  • 1970-01-01
  • 2010-10-02
  • 2018-07-23
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
相关资源
最近更新 更多