注意:我有15967908条记录。我是新手 卡桑德拉。参考:Is there a way to effectively count rows of a very huge partition in Cassandra?
Coordinator node timed out waiting for replica nodes in Cassandra Datastax while insert data
嗨,朋友们,我在寻找其他答案,但对我来说并不成功。他们提到我们需要增加 cassandra.yaml 文件中的超时时间,但是问题是我没有该文件。
我已经用HomeBrew安装了Cassandra。以下是我当前在MacBook上运行的版本
cqlsh:cassandra_training> show version;
[cqlsh 5.0.1 | Cassandra 3.11.4 | CQL spec 3.4.4 | Native protocol v4]
当我这样做
cqlsh:cassandra_training> select count(*) from access_point_logs;
然后出现以下错误
ReadTimeout: Error from server: code=1200 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 1 responses." info={'received_responses': 1, 'required_responses': 1, 'consistency': 'ONE'}
我需要增加哪个文件的超时时间。由于我没有得到 cassandra.yaml 文件。
我的Cassandra安装路径如下
/usr/local/Cellar/cassandra/3.11.4
有什么方法可以计算记录数。
答案 0 :(得分:1)
简而言之,答案是否定的。您应该在未指定任何键的情况下运行查询,因为这不是Cassandra的设计方式。
如果您只需要一个一次性电话号码,则可以使用nodetool tablestats。
Button
在输出中查找“键数(估计)”。
上面的命令将为您提供表中分区键的估计数量,因此这可能是您想要的,也可能不是。
如果您需要定期获取此编号,我通常会创建另一个计数器表,并在您从另一个表中添加/删除记录时对其进行管理。
答案 1 :(得分:0)
我解决了这个问题。创建表时,我没有正确地将主键与集群键添加在一起,因为它显示了这种错误。
我以前是通过以下方式创建表结构的
create table access_point_logs (
id bigint primary key,
wd_number varchar,
ip_address varchar,
mac_address varchar,
created_at timestamp,
updated_at timestamp,
access_point_id bigint
);
现在将其更改为以下内容
create table access_point_logs(
id bigint,
wd_number varchar,
ip_address varchar,
mac_address varchar,
created_at timestamp,
updated_at timestamp,
access_point_id bigint,
primary key ((wd_number), created_at, mac_address)
) with clustering order by (created_at desc);
以防万一像我这样的新手,我想添加以下定义和示例以了解什么是分区密钥和什么集群密钥
仔细观察以下变化
primary key ((wd_number), created_at, mac_address);
Partition Key - wd_number
Cluster Key - created_at, mac_address
分区键-在哪个特定节点上存储数据 集群。
集群键-主要用于对数据进行排序以及如何显示 提取数据时的默认顺序。
主键-可能是分区键+集群键的组合,或者 只是一个分区键
希望它可以对某人有所帮助。如果有人有疑问,请随时解雇。我会尽力回答这些问题。