Apache Cassandra的Java客户端驱动程序。此驱动程序仅使用Cassandra查询语言版本3(CQL3)和Cassandra的二进制协议。
有可能立即对远程数据中心进行投机重试? 我的Cassandra群集托管在两个数据中心上。它们不仅被某些延迟隔开了,有时它们都可能暂时无法使用。 每个_quorum不是一个选项,因为它是b ...
可以配置Java驱动程序以对远程群集进行立即进行投机重试? 据我了解,这将把请求发送给数据中心,并且一旦任何一个返回(通常是本地的);驾驶员将返回。
Java 驱动程序不断重新连接到旧的 Cassandra pod IP,但重启后 pod 具有新的 IP
我在 Kubernetes 环境中部署了一个 Java 应用程序作为 pod,以及具有 3 节点集群的 Cassandra。我正在使用 Cassandra 服务 FQDN 连接到 Cassandra。由于卡桑德拉...
如何将 Spring 的 Cassandra Java 驱动程序 3.11.3 升级到 4.0.0?
我应该将我的 Cassandra 版本升级到 4.0.0,但每当我这样做时,我都会遇到这样的许多问题: 错误:错误:无法访问 TypeCodec, 错误:找不到符号 而且我...
从 IntelliJ IDE 连接返回“由于您提供了显式接触点,因此必须显式设置本地 DC”
我在从 intellij IDE 连接到 cassandra 时遇到了本地 DC 问题。它表示必须显式设置本地 DC。我提供以下详细信息 主机:cassandra.prod-az-southcentralus-30...
在 Windows 上使用单线程 Java 客户端时,单节点集群会忽略 LWT 更新
我有以下设置: cassandra 4.1.7 在 Ubuntu 主机上的 docker 中运行,单节点 带 datastax 驱动程序 3.11.5、jdk 11.0.25 的 java 客户端 代码: 公共类主要{ 公共静态语音...
如何在 Cassandra Java 驱动程序 4.17.0 中使用 QueryBuilder 添加 TTL 变量
我想生成类似“INSERT INTO table1 (id, data) VALUES (:id, :data) USING TTL :ttl”的查询 使用 Datastax Cassandra 驱动程序 QueryBuilder.insertInto()。 其他相关问题太o...
如何添加 USING TTL 来使用 Datastax querybuilder 进行查询(4.17.0 Java 驱动程序)
我想生成类似“INSERT INTO table1 (id, data) VALUES (:id, :data) USING TTL :ttl”的查询 使用 Datastax Cassandra 驱动程序 QueryBuilder.insertInto()。 其他相关问题太o...
我正在尝试从命令行插入我的 CQL 表。我能够插入所有内容。但我想知道我是否有时间戳列,那么如何从
我的问题是我没有在单节点 Cassandra 上立即删除。 当我在 Docker 容器中运行 Cassandra 时,该问题仅出现在 Windows 上。 Linux上没有问题。我正在使用
我使用了 datastax 驱动程序 3.11.5 版本来连接到 4.x 版本中的 cassadra 实例。这兼容吗? 另外,当我使用 cassandra-unit 版本 4.3.1 中的 EmbeddedCassandraServiceHelper 时...
我正在尝试注册自定义代码(用于地图),如下所示 val 会话:CqlSession = CassandraConnector.apply(spark.sparkContext).openSession() val codecRegistry:MutableCodecRegistry = 会话。
Apache Cassandra 4.x java 驱动程序兼容性
想要将 Cassandra 从 3.3 升级到 4.0.6。该数据库由运行 Datastax 驱动程序 3.2 的 Java 应用程序使用,某些应用程序使用 Dropwizard cassandra 驱动程序版本 4.0。 我会...
Java 驱动程序 v3.6 与 Cassandra 4.x 兼容吗?
我写信是为了检查 Datastax cassandra-driver-core 3.6 与 Cassandra 版本 4 的兼容性。 可以请您推荐一下吗? 下面是当前正在使用的依赖项,
无法使用错误提供的选项连接到远程 Cassandra 数据中心
我正在尝试使用 Cassandra CqlSession 类连接到我的两个远程联系点。我正在使用 spring boot 3.3.3 和 spring-data-cassandra 4.3.3。以下是 datastax 驱动程序依赖项...
Spring Boot Cassandra 连接问题:无法连接到 DataStax Astra DB
我正在开发一个 Spring Boot 应用程序,该应用程序使用 Astra 安全捆绑包与 DataStax Astra DB 集成。但是,在尝试建立与
Cassandra Java 驱动程序与 JDK 21 兼容吗?
cassandra java 驱动程序 4.17 与 jdk 21 兼容吗?我们计划将服务器迁移到 java 21,并且我们正在使用 cassandra 客户端。如果不支持这一点,我们就不行。 那里...
扫描 Cassandra 表时如何增加提取大小以减少网络调用数量?
我正在使用 datastax java 驱动程序版本 4.15。我已阅读分页文档。 我的 application.conf 如下所示 datastax-java-驱动程序 { basic.contact-points = [ ":<...
当我执行批处理语句时,我看到未配置的表错误(不一致)。 在批处理语句中,我有几个准备语句(10) 很少有准备语句(其中 2 个)...
Datastax Java 驱动程序 4.x:如何获取集群名称?
将 cassandra 的 java 驱动程序从 3.7 升级到 4.0(或更高版本)后 - 我无法解析集群名称。 我需要我的应用程序连接到的 cassandra 集群的名称...
使用分页时发生 Cassandra DriverTimeoutException
我有一个从 4 个 Cassandra 表读取数据的应用程序,4 个表位于不同的集群中,并且我通过 datastax java 驱动程序进行 4 个会话 我有一个从 4 个 Cassandra 表读取的应用程序,4 个表位于不同的集群中,并且我通过 datastax java 驱动程序进行 4 个会话 <dependency> <groupId>com.datastax.oss</groupId> <artifactId>java-driver-core</artifactId> <version>4.17.0</version> </dependency> 我正在第一个表上进行单行获取(点查询),并在其他 3 个表上使用分页。对第二个表进行查询的结果将用于对第三个和第四个表的查询。 表4主键-(id,store) store 是聚类键,id 是分区键 从表3中获得了一堆商店。 第四个集群的 Cassandra 会话详细信息是 - DriverConfigLoader.programmaticBuilder() .withLong(DefaultDriverOption.REQUEST_PAGE_SIZE, 1000) .withLong(DefaultDriverOption.CONNECTION_POOL_LOCAL_SIZE, 4) .withLong(DefaultDriverOption.CONNECTION_MAX_REQUESTS, 8192) .withBoolean(DefaultDriverOption.SOCKET_KEEP_ALIVE, true) .withBoolean(DefaultDriverOption.SOCKET_REUSE_ADDRESS, true) .withBoolean(DefaultDriverOption.METADATA_SCHEMA_ENABLED, false) .withDuration(DefaultDriverOption.REQUEST_TIMEOUT, Duration.ofSeconds(30)) .withString(DefaultDriverOption.REQUEST_CONSISTENCY, DefaultConsistencyLevel.LOCAL_ONE.toString()) .build(); 第四张表的代码如下所示 return cqlSession.executeAsync(ps.bind(id)) .thenCompose(rs -> { Map<String, Set<String>> finalMap = new HashMap<>(); return processRows(rs, finalMap, listedStores, limoEligStartTime); }) .exceptionally(ex -> { // do something, record metrics return Collections.emptyMap(); ` }); processRows 函数看起来像 private CompletionStage<Map<String, Set<String>>> processRows(AsyncResultSet rs, Map<String, Set<String>> finalMap, Set<String> thirdTableResult, long resultGetTime) { METRICS.recordExecutionTime("LimoEligibilityQueryTime", System.currentTimeMillis() - resultGetTime); Iterable<Row> iterable = rs.currentPage(); for (Row row : iterable) { try { if (row != null) { // do something } else { //record metrics for row not found } } catch (IOException ex) { //record exception } } if (rs.hasMorePages()) { return rs.fetchNextPage() .thenCompose(asyncRs -> processRows(rs, finalMap, thirdTableResult, limoEligRowsProcessingCompletionTime)) .exceptionally(ex -> { // record exception return Collections.emptyMap(); }); } else { return CompletableFuture.completedFuture(finalMap); } } 这将返回以下异常: Exception occurred in table future - java.util.concurrent.CompletionException: com.datastax.oss.driver.api.core.DriverTimeoutException: 我尝试过调整页面大小,但不起作用。表3和表4是并行查询的。我在表 2,3,4 上使用分页。 对于表 4,我面临查询问题 驱动程序是否有可能因为同时对两个不同集群进行查询而超时? 尝试了以下方法,但没有任何效果 调整页面大小 - 100 至 1000 增加每台主机的连接数 - 4 每个连接的最大请求 - 尝试从 2048 到 8192 当我使用表 3 的结果从表 4 中获取单行时(从表 3 中获得了一堆存储),查询工作完全正常,我没有得到任何异常,但这增加了读取吞吐量cassandra 集群(这不是我们想要的) DriverTimeoutException 表示您正在连接的集群无法及时满足您的请求。也就是说,它已过载,无法在超时之前响应请求。 您的 Cassandra 集群基本上是在说“我跟不上”。 可能是您的代码使集群过载,通过发送大量请求有效地创建了 DDOS 攻击,也可能是您的集群因其他原因感觉不佳。无论哪种方式,都需要在服务器端识别问题。 如果是您的代码迫使节点提交(这可能考虑到您正在运行异步),那么您可以选择减慢您的请求(例如通过在服务器或客户端上进行限制)或确保您的请求集群可以处理您发送的请求数量。