Wil*_*oat 6 cassandra cassandra-cli datastax-java-driver datastax cassandra-2.0
我从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);
Run Code Online (Sandbox Code Playgroud)
我的查询:
SELECT KeywordId, Date, HourOfDay, Impressions, Clicks,AveragePosition,ConversionRate,AOV,AverageCPC,Bid
FROM StatisticsKeyspace.hourlystatistics
WHERE Date >= '2014-03-22' AND Date <= '2014-03-24'
Run Code Online (Sandbox Code Playgroud)
我在我的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
Run Code Online (Sandbox Code Playgroud)
但它仍然会在大约10秒内抛出超时.任何想法如何解决这个问题?
如果从datastax使用java客户端,默认情况下启用分页,行设置为5000.如果仍然超时,则可以尝试使用
public Statement setFetchSize(int fetchSize)
Run Code Online (Sandbox Code Playgroud)
(了解更多)
如果您使用的是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;
Run Code Online (Sandbox Code Playgroud)
要检测某些群集问题,您可以尝试选择限制为1,可能存在潜在问题.
希望有所帮助.
如果您仍然遇到查询性能问题,我会查看您的二级索引,因为传输的数据量似乎合理(仅返回"小"数据类型).如果我是对的,更改提取大小不会有太大变化.相反,您是否只在"日期"(时间戳)列中插入日期?如果您正在插入实际时间戳,则由于基数,此列上的二级索引将非常慢.如果仅插入日期,则时间戳将默认为日期+"00:00:00"+ TZ,这应该会降低基数,从而提高查找速度.(注意时区问题!)为了绝对确定,请尝试使用不同数据类型的列的二级索引,例如日期的int(计算自1970-01-01或sth以来的天数).
| 归档时间: |
|
| 查看次数: |
17694 次 |
| 最近记录: |