gpt4 book ai didi

cassandra - Cassandra 读取错误

转载 作者:行者123 更新时间:2023-12-02 20:17:08 33 4
gpt4 key购买 nike

我在尝试从 Cassandra 表读取数据时遇到错误。我有一个单节点安装,采用默认设置。这是我正在发出的查询:

  SELECT component_id,
reading_1,
reading_2,
reading_3,
date
FROM component_readings
WHERE park_id=2
AND component_id IN (479)
AND date >= '2016-04-09+0000'
AND date <= '2016-05-08+0000';

component_readings是一个简单的表,没有聚类条件:

CREATE TABLE component_readings (
park_id int,
component_id int,
date timestamp,
reading_1 decimal,
reading_2 decimal,
...
PRIMARY KEY ((park_id), component_id, date)
);

对于某些 component_id 值,它可以工作,对于其他值,它会失败。这是我收到的错误:

cassandra.ReadFailure: code=1300 [Replica(s) failed to execute read] 
message="Operation failed - received 0 responses and 1 failures"
info={'required_responses': 1, 'received_responses': 0, 'failures': 1,
'consistency': 'LOCAL_ONE'}

并且 cassandra 的 system.log 显示此错误:

ERROR [SharedPool-Worker-1] 2016-05-09 15:33:58,872 StorageProxy.java:1818 - 
Scanned over 100001 tombstones during query 'SELECT * FROM xrem.component_readings
WHERE park_id, component_id = 2, 479 AND date >= 2016-04-09 02:00+0200 AND date <=
2016-05-08 02:00+0200 LIMIT 5000' (last scanned row partion key was ((2, 479),
2016-05-04 17:30+0200)); query aborted

奇怪的是,只有在从外部程序(通过 python cassandra-connector)进行查询时我才会收到错误。如果我直接在 cqlsh shell 中创建它,它就可以完美运行。

我的安装是 cassandra 2.2,但我已经升级到 3.5,并且遇到了相同的错误。

最佳答案

您超出了tombstone_failure_threshold。默认为 100'000。您可以

  • 增加 cassandra.yaml 中的值或
  • 清理你的墓碑

执行后者alter您的表并将 gc_grace_seconds 设置为 0:

ALTER TABLE component_readings WITH GC_GRACE_SECONDS = 0;

然后通过nodetool触发压缩。这将清除所有墓碑。

在单节点集群的特定场景中,您可以将 GC_GRACE_SECONDS 保留为零。但如果您这样做了,如果您想使用多个节点,请记住撤消此操作!

关于cassandra - Cassandra 读取错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37114455/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com