【问题标题】:Unavailable exception while trying to retrieve data from Cassandra尝试从 Cassandra 检索数据时出现不可用异常
【发布时间】:2013-05-15 06:09:36
【问题描述】:

我有一个 Cassandra DB,并且正在创建一个列族,如下所示。

CREATE COLUMN FAMILY users
WITH comparator = UTF8Type
AND key_validation_class=UTF8Type
AND column_metadata = [
{column_name: username, validation_class: UTF8Type}
{column_name: city, validation_class: UTF8Type, index_type="KEYS"}
];

我正在使用 node.js 中的以下内容将数据插入列族

var cql = "INSERT INTO App.users(KEY,username,city) VALUES (?,?,?)";
cassandra.execute(cql,[json.username+(new Date().getTime()),json.username,
    json.city], function(err, rows) {
  if(err) {
    console.log(err);
    return 1;
  }
  return 0;
});

这可以正常执行,但假设我使用 cassandra-cli 并运行

 get user where city='NYC';

我得到一个不可用的异常。以下是我在 node.js 脚本中的 CQL 查询,它引发了相同的异常。

var cql = "SELECT notes,heading FROM App.users where city=?";

你知道我做错了什么吗?我在城市列上做了二级索引,希望是正确的。提前致谢。

【问题讨论】:

  • 你有多少个节点?有没有不可用的?运行“nodetool status”时是否有任何节点列为关闭?
  • 到目前为止,我只有一个节点。让我检查 nodetool 状态命令。
  • 是你的错还是错字...get users where city='NYC'
  • 密钥空间的复制因子是多少?
  • 那么你能在get user where city='NYC';告诉我user是什么吗?我猜你有users 作为你的 CF ......并且还让我知道你的射频。也许你可以提供我 cqlsh 的desc keyspace 输出

标签: node.js nosql cassandra


【解决方案1】:

感谢阿比的建议。该链接非常有用,因此我以以下方式创建了键空间并且它正常工作。

create keyspace App with placement_strategy ='org.apache.cassandra.locator.SimpleStrategy' 
   and strategy_options = {replication_factor:2};

我已将 2 台计算机连接到我的 cassandra 集群,因此 replication_factor 设置为 2。

【讨论】:

  • 我认为它不能正常工作,因为您的 RF 等于 2,并且您之前说过您正在处理单个节点。
  • 对不起,我忘了说,我在集群中添加了另一台计算机。
  • 除此之外,我正在使用由 rackspace 创建的 node.js 客户端从 Cassandra 中插入和选择行。插入工作正常,但选择运行时出现问题。你有什么想法吗?这是我指的错误线程github.com/racker/node-cassandra-client/issues/…
【解决方案2】:

也许这是一个键空间创建问题。正确检查您的键空间创建模式。可能这个discussion on cassandra user group会给你一个更好的主意

【讨论】:

  • 确保将答案标记为已解决,这样过来的其他人就会知道这是正确的。谢谢!
猜你喜欢
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-14
  • 2023-03-17
相关资源
最近更新 更多