cassandra datastax操作时间异常

3pmvbmvn  于 2021-06-15  发布在  Cassandra
关注(0)|答案(2)|浏览(399)

我使用的是部署在3个不同vm上的3节点cassandra3.0.14。我有大量的数据(数十亿),我想快速搜索我的Cassandra架构。
我对Cassandra做了很多研究,但仍然面临一些我无法理解的问题:
1-当我使用cqlsh时,我可以做一个查询来分析我的所有数据库 SELECT DISTINCT val_1 FROM myTable; 正在工作。
但是,我不能使用java代码和datastax驱动程序发出相同的请求。我的脚本返回: Caused by: com.datastax.driver.core.exceptions.OperationTimedOutException: [/XX.XX.XX.XX:9042] Timed out waiting for server response 2-某些请求正在使用cqlsh工作,但发出更具体的请求将导致请求超时: OperationTimedOut: errors={'127.0.0.1': 'Client request timeout. See Session.execute[_async](timeout)'}, last_host=127.0.0.1 例如,如果我提出这个请求: SELECT val_1 FROM myTable where time>'2018-09-16 09:00:00'; 会有用的 SELECT val_1 FROM myTable where time>'2018-09-16 09:00:00' and time<'2018-09-17 09:00:00'; 会导致超时
我把我的请求超时时间改为60秒,但我知道这不是一个好的做法。我还增加了我的read\ u request\ u timeout\ in\ ms和range\ u request\ u timeout\ in\ ms,但我仍然有以前的问题。
有人会有同样的问题吗?
-尼古拉斯

watbbzwu

watbbzwu1#

这是因为你用Cassandra的方法不正确。只有在查询中指定了分区键时,范围操作、distinct等才能发挥最佳效果。否则,cassandra将需要扫描整个集群,试图找到所需的数据,这将导致即使在中型数据库上也会超时。不要使用 ALLOW FILTERING 强制执行查询。
在cassandra中,数据库结构是围绕要执行的查询建模的。我建议从税务学院学习ds201和ds220课程。

aamkag61

aamkag612#

尝试在java代码中调整客户端超时,如下所示:

//configure socket options
SocketOptions options = new SocketOptions();
options.setConnectTimeoutMillis(30000);
options.setReadTimeoutMillis(300000);
options.setTcpNoDelay(true);

//spin up a fresh connection (using the SocketOptions set up above)
cluster = Cluster.builder().addContactPoint(Configuration.getCassandraHost()).withPort(Configuration.getCassandraPort())
            .withCredentials(Configuration.getCassandraUser(), Configuration.getCassandraPass()).withSocketOptions(options).build();

相关问题