Cassandra cqlsh查询失败,没有错误

时间:2015-01-04 15:19:29

标签: cassandra cassandra-2.0 cqlsh

我一直在尝试运行这样的查询:

SELECT COUNT(*) FROM sensors WHERE sensor_id = 1 and date = '2014-11';
列系列上的

。 WHERE子句过滤到具有大约200万列的分区键。我希望得到大约的计数结果。 200万,但我得到了这个错误:

errors={}, last_host=[THE_IP_OF_MY_SERVER]

如果我运行查询来获取列,它返回数据就好了,但它不能返回计数。我理解计数查询可能存在的性能问题(例如讨论过的here)但我仍然想为我的测试得到一些查询结果。

所以我的问题是:

  1. 这是超时错误吗?如果是的话我怎么能增加超时时间?
  2. 如果没有,为什么我会收到此错误?有没有办法获得更多细节?我检查了集群中每个节点上的system.log,并且在查询期间没有打印任何内容。
  3. 我在运行Ubuntu 14.04的两个节点的集群上使用Cassandra 2.1和cqlsh 5.0.1以及spec 3.2。

    由于

2 个答案:

答案 0 :(得分:3)

编辑〜/ .cqlshrc或〜/ .cassandra / cqlshrc:

[connection]
client_timeout = 20

根据需要调整超时数(秒)。

答案 1 :(得分:2)

应该是超时。您可以通过更改" read_request_timeout_in_ms"的值来增加请求所需的最长时间。甚至" range_request_timeout_in_ms" (在cassandra.yaml中)如果您打算使用范围查询。更改值后重新启动群集(默认为10秒)。

请注意,如果对分区键运行精确查询,则计数为0或1。因此,如果返回的行超过1行,则查询是在聚类列(主键的第一列之后的列)上。