我正在尝试"从用户中选择count(*);"在cassandra但是在等待10秒钟(大约)之后我得到了" OperationTimedOut:errors = {},last_host = 127.0.0.1"。我在cqlsh上尝试这个。 cqlsh和cassandra版本如下。
cqlsh 5.0.1 | Cassandra 3.0.8
我在stackoverflow上找到了一些解决方案。但他们都没有工作。我在下面试过。
我在文件夹.cassandra中创建了文件cqlshrc,并在下面的文件中添加了
[连接]
client_timeout = 2000000
stackoverflow中很少有解决方案建议在文件cqlsh中增加一些超时字段,但File' / cassandra / bin / cqlsh'没有任何这样的字段,所以我没有改变该文件中的任何内容。 cqlsh文件内容在
python -c' import sys; sys.exit(不是(0x020700b0< sys.hexversion< 0x03000000))' 2> / dev / null \
&安培;&安培; exec python" python -c "import os;print(os.path.dirname(os.path.realpath('$0')))"
/ cqlsh.py" " $ @"
对于2.7中的pyver;做
哪个python $ pyver> / dev / null 2>& 1&& exec python $ pyver" python$pyver -c "import os;print(os.path.dirname(os.path.realpath('$0')))"
/ cqlsh.py" " $ @"
DONE
echo"找不到合适的python解释器。" >和2
退出1
请解决方案。
答案 0 :(得分:3)
如果Cassandra服务器工作正常,则超时异常会引发,因为服务器无法处理请求。是'用户'表太大了?
计算大牌桌的一个解决方案是使用'计数器'输入另一张表。
例如,我们可以创建一个这样的表:
CREATE TABLE custom_counters
(name varchar,
count counter,
PRIMARY KEY (name)
);
每次我们在'用户'中插入用户表格,我们会在' custom_counters'中更新其计数器。表:
UPDATE custom_counters
SET count = count + 1
WHERE name='users';
因此,当我们需要知道用户数量时,我们必须请求该字段:
SELECT count FROM custom_counters WHERE name = 'users';
此处有更多信息:https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html