这是我的Cassndra表
SET FOREIGN_KEY_CHECKS=0
我有6个节点的Cassandra集群
当我尝试使用Java Driver获取以下READ查询时,
CREATE TABLE ipaddresss (
ipAddress text,
time timestamp,
clientId inet,
..
..
..
PRIMARY KEY (ipAddress, time, clientId)
) WITH CLUSTERING ORDER BY (time DESC, clientId ASC)
我经常收到com.datastax.driver.core.exceptions.ReadTimeoutException:在一致性ONE的读取查询期间出现Cassandra超时(需要1个响应但只响应0个副本)。我大部分时间都得到了答案,但即使系统没有负载,仍然会有很多超时。
结果集最多有1000行,因此设置Fetchsize没有帮助
答案 0 :(得分:0)
好奇,但每个ipAddress
分区中存储了多少CQL行?每行的列数也会增加结果集的大小。尝试从cqlsh查询,看看你是否仍然收到超时。否则,尝试通过查询该分区内的有限时间范围来限制结果集。
示例:
select * from ipaddresss where ipAddress = '12.45.67.89'
AND time >= '2016-11-21 00:00' and time < '2016-11-21 04:00';
否则,Spring Data Cassandra本身可能会导致您的问题。在通过大型结果集进行分页时,Spring Data Cassandra在幕后执行(非常低效)SELECT COUNT(*)
。如果您可以在Spring-Data-Cassandra之外使用此查询,那么这可能是您的问题。如果有疑问,您应该始终使用DataStax认可的驱动程序,而Spring-Data-Cassandra则不然。