Cassandra cqlsh 查询失败,没有错误

Cassandra cqlsh query fails with no error

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

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

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

errors={}, last_host=[THE_IP_OF_MY_SERVER]

如果我运行查询以获取列,它 return 数据很好,但它不能 return 计数。我了解此类计数查询可能存在的性能问题(例如讨论的问题 here),但我仍然希望为我的测试获得此查询的一些结果。

所以我的问题是:

  1. 这是超时错误吗?如果是,我该如何增加超时时间?
  2. 如果不是,为什么会出现此错误?有没有办法获得更多详细信息?我检查了集群中每个节点上的 system.log,在查询期间没有打印任何内容。

我在运行 Ubuntu 14.04.

的两个节点集群上使用 Cassandra 2.1 与 cqlsh 5.0.1 和 spec 3.2

谢谢

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

请注意,如果您 运行 对分区键进行精确查询,您将得到 0 或 1 作为计数。因此,如果 returns 多于 1 行,则您的查询是针对聚类列(主键第一列之后的列)。

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

[connection]
client_timeout = 20

根据需要调整超时数(以秒为单位)。