Cassandra 读取超时

标签 cassandra cassandra-2.0 datastax datastax-java-driver cassandra-cli

我正在从 cassandra 2.0 中提取大量数据,但不幸的是出现超时异常。
我的表:

CREATE KEYSPACE StatisticsKeyspace
  WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };


CREATE TABLE StatisticsKeyspace.HourlyStatistics(
KeywordId text,
Date timestamp,
HourOfDay int,
Impressions int,
Clicks int,
AveragePosition double,
ConversionRate double,
AOV double,
AverageCPC double,
Cost double,
Bid double,
PRIMARY KEY(KeywordId, Date, HourOfDay)
);
CREATE INDEX ON StatisticsKeyspace.HourlyStatistics(Date);

我的查询:
SELECT KeywordId, Date, HourOfDay, Impressions, Clicks,AveragePosition,ConversionRate,AOV,AverageCPC,Bid 
FROM StatisticsKeyspace.hourlystatistics 
WHERE Date >= '2014-03-22' AND Date <= '2014-03-24'

我在 cassandra.yaml 中更改了配置文件。
read_request_timeout_in_ms: 60000
range_request_timeout_in_ms: 60000
write_request_timeout_in_ms: 40000
cas_contention_timeout_in_ms: 3000
truncate_request_timeout_in_ms: 60000
request_timeout_in_ms: 60000

但它仍然会在大约 10 秒内引发超时。任何想法如何解决这个问题?

最佳答案

如果使用来自 datastax 的 java 客户端,默认情况下启用分页,行集为 5000。如果仍然超时,您可以尝试使用

public Statement setFetchSize(int fetchSize)

( read more )

如果您使用的是 cli,则可能需要尝试某种手动分页:
SELECT KeywordId, Date, HourOfDay, Impressions, Clicks,AveragePosition,ConversionRate,AOV,AverageCPC,Bid 
FROM StatisticsKeyspace.hourlystatistics 
WHERE Date >= '2014-03-22' AND Date <= '2014-03-24' 
LIMIT 100;

SELECT * FROM ....  WHERE token(KeywordId) > token([Last KeywordId received]) AND ...
LIMIT 100;

要检测一些集群问题,您可以尝试使用限制为 1 的选择,也许存在潜在问题。

希望有帮助。

如果您的查询仍然遇到性能问题,我会查看您的二级索引,因为传输的数据量似乎合理(仅返回“小”数据类型)。如果我是对的,更改提取大小不会有太大变化。
相反,您是否仅在“日期”(时间戳)列中插入日期?如果您要插入实际时间戳,则由于基数,此列上的二级索引将非常慢。如果仅插入日期,则时间戳 will default to date + "00:00:00"+ TZ 这应该减少基数,从而提高查找速度。 (注意时区问题!)绝对可以肯定,在具有不同数据类型的列上尝试二级索引,例如 Date 的 int (计算自 1970-01-01 或 sth 以来的天数)。

关于Cassandra 读取超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24242177/

相关文章:

java - TaskSchedulerImpl : Initial job has not accepted any resources;

cassandra - 具有 cassandra 集群时的 Nodetool 输出

linux - 从 5.0.7 升级到 dse 6.7.5 后索引分区出错

cassandra - 在kubernetes中维护复制的数据库

transactions - Cassandra 轻量级交易的一致性级别

java - Cassandra Sync 和 Async,哪一个返回结果集更快?

java - Pelops Java 客户端插入 Cassandra 数据库

Cassandra 安装问题

database - Cassandra 约束

ubuntu - 安装 datastax cassandra 2.0 时出错