gpt4 book ai didi

cassandra - Cassandra cqlsh shell 上的协调器节点超时

转载 作者:行者123 更新时间:2023-12-02 22:26:42 36 4
gpt4 key购买 nike

我是 cassandra 新手,尝试在两台 Mac 计算机上进行多节点设置。它不是 datastax casandra。比如我的IP是10.100.1.12,其他机器的IP是10.100.1.15。我已更改机器上 cassandra.yaml 文件中的以下属性:

10.100.1.15:

  • 种子:“127.0.0.1,10.100.1.12,10.100.1.15”
  • 监听地址:10.100.1.15
  • rpc_地址:10.100.1.15
  • endpoint_snitch:GossipingPropertyFileSnitch

10.100.1.12:

  • 种子:“127.0.0.1,10.100.1.12,10.100.1.15”

  • 监听地址:10.100.1.12

  • rpc_地址:10.100.1.12

  • endpoint_snitch:GossipingPropertyFileSnitch

    cassandra 运行良好 cqlsh 也使用命令打开bin/cqlsh 10.100.1.12

但是当我尝试检索表的数量时,它向我显示错误:

ReadTimeout:来自服务器的错误:code=1200 [协调器节点等待副本节点响应超时] message="操作超时 - 仅收到 0 个响应。"info={'received_responses': 0, 'required_responses': 1, 'consistency': 'ONE'}

我尝试将 read_request_timeout_in_ms 属性从 5000 更改为 20000,但仍然遇到相同的错误。谁能帮我解决我做错的事情吗?

表架构如下:

cqlsh:app_auditor> describe table traffic_data;

CREATE TABLE app_auditor.traffic_data (
current_time bigint PRIMARY KEY,
appid bigint,
attributes map<text, text>,
device bigint,
flow_type text,
message_time bigint
) WITH bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 86400
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';

我正在使用的计数查询是从traffic_data中选择count(*);

最佳答案

在 Cassandra 中,count(*) 的成本非常高,cassandra 需要扫描所有节点中的所有行才能得到计数,这就是为什么它会给你超时异常。

不要使用 count(*) 维护一个计数器表,如下所示:

CREATE TABLE traffic_counter (
type int PRIMARY KEY,
traffic_count counter
);

当数据插入traffic_data数据时,增加traffic_count的值

UPDATE traffic_counter SET traffic_count = traffic_count + 1 WHERE type = 0;

现在您可以非常有效地选择流量计数。

SELECT traffic_count FROM traffic_counter WHERE type = 0;

关于cassandra - Cassandra cqlsh shell 上的协调器节点超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43067769/

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