问题标签 [datastax-java-driver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
timeout - Cassandra 频繁的读写超时
我已经将整个代码库Thrift
从CQL
使用datastax java driver 1.0.1
和cassandra 1.2.6..
节俭我从一开始就经常超时,我无法继续......采用CQL,按照我成功设计的表格和更少的超时......
有了它,我就能够插入大量数据,这些数据不能与 thrift 一起使用……但经过一个阶段后,数据文件夹大约为 3.5GB。我经常收到写超时异常。即使我再次执行相同的早期工作用例,现在也会引发超时异常。即使在重新设置后,它的随机工作也不再工作。
CASSADNRA 服务器日志
这是 cassandra 服务器部分日志调试模式,当时我收到错误:
客户例外是:
基础设施: 16GB 机器,8GB 堆分配给 cassandra,i7 处理器。我正在使用单节点 cassandra,此 yaml 已针对超时进行了调整,其他一切都是默认设置:
- read_request_timeout_in_ms: 30000
- range_request_timeout_in_ms:30000
- write_request_timeout_in_ms:30000
- truncate_request_timeout_in_ms:60000
- request_timeout_in_ms:30000
用例: 我正在运行一个用例,它在 cassandra 中存储组合(我的项目术语)......目前正在测试用 100 个并行线程存储 250 000 个组合......每个线程存储一个组合......我需要支持几十个的真实案例数百万,但这需要不同的硬件和多节点集群......
存储一个组合大约需要 2 秒,包括:
- 527 插入查询
- 506 更新查询
- 954 选择查询
100个并行线程并行存储100个组合。
我发现 WRITE TIMEOUTS 的行为是随机的,有时它可以工作到 200 000,然后抛出超时,有时即使是 10k 组合也不起作用。随机行为。
java - Datastax Cassandra Native Java Driver - 使用 Query Builder 有性能优势吗?
使用新的本机驱动程序,可以使用字符串或通过QueryBuilder
类构造 CQL 查询。
我想知道驱动程序如何处理使用QueryBuilder
. 它是向协调器节点传输已解析查询的表示还是只是将构造的查询作为字符串传输?
我问的原因是因为我们以结构化格式指定查询。将这种格式转换为基于文本的 CQL 比使用 QueryBuilder 更容易,但如果值得,我们会这样做。
本质上,我的问题归结为:CQL 在哪里解析,在驱动程序中还是在节点上?
cassandra - 使用 DataStax 驱动程序支持 Cassandra 行级锁定
Cassandra 行级锁定支持,同时由并发用户访问同一行
我们正处于购物车应用程序的设计阶段,考虑将 Cassandra 作为库存数据库。现在的要求是,如果多个用户同时访问 Inventory DB 中的同一产品行。例如:- 产品表:productID productQuantitiy 1000 1 如果第一个用户选择产品“1000”并将产品数量添加为购物车中的“1”,则访问同一产品的其他用户应该无法选择该产品,直到它获得免费第一个用户(更新产品数量为 0)。cassandra 也为这种场景提供行级锁定支持
cassandra - populate_io_cache_on_flush 不是此元数据中定义的列
使用 Data-stax Java 驱动程序 1.0.2 版连接到 Cassandra 1.2.1 时,出现错误:
在下面的行:
我尝试删除文件夹 \var\lib\cassandra ,然后也重新启动 cassandra 服务器,这意味着没有以前的数据。服务器启动时没有任何错误,但是当我尝试连接时仍然出现上述错误。
cassandra - 使用 Cassandra 和 CQL3,如何在单个请求中插入整个宽行?
我想在 Cassandra 1.2.8 中插入一行 50,000 列。在插入之前,我已经准备好整行的所有数据(在内存中):
列名是整数,允许分页切片。列值是该特定索引处的值。
CQL3 表定义:
由于我已经在内存中拥有 row_id 和所有 50,000 个名称/值对,因此我只想在单个请求/操作中将单行插入 Cassandra,以便尽可能快。
我似乎唯一能找到的就是执行以下 50,000 次:
第一个?
是索引计数器 ( i
),第二个?
是要存储在位置的文本值i
。
这需要很多时间。即使我们把上面的 INSERT 放到一个批处理中,也需要很多时间。
我们拥有完整的所有我们需要的数据(完整的行),我认为只需说“在这里,Cassandra,将这些数据作为一个请求中的一行存储”非常容易,例如:
此示例无法通过当前的 CQL3 语法实现,但我希望它说明了预期的效果:所有内容都将作为单个查询插入。
是否可以在 CQL3 和 DataStax Java 驱动程序中执行此操作?如果不是,我想我将被迫使用 Hector 或 Astyanax 驱动程序和 Thriftbatch_insert
操作?
cassandra - Cassandra NoHostAvailableException
使用 Datastax Java 驱动程序连接到本地网络内的 cassandra 1.2.8 集群时没有问题。在我的本地网络之外,我得到了 NoHostAvailableException 异常。我检查了 9160 端口已启动并从路由器映射到服务器。你能帮我解决任何其他可能的原因吗?
谢谢
session - 使用 Cassandra Datastax Java 驱动程序检查会话
有没有直接的方法来检查集群/会话是否已连接/有效/正常?
我的意思是,我在一个永无止境的线程中创建了一个 com.datastax.driver.core.Session,我想确保每次需要时会话都正常。我使用下一个集群初始化,但我不确定这是否足够......
cassandra - 无法连接到 cassandra - NoHostAvailableException
我知道有几个线程,NoHostAvailableException
但它们根本没有为我的问题提供解决方案。
我无法使用 Datastax Java Cassandra 驱动程序连接到 Cassandra。我得到错误:
com.datastax.driver.core.exceptions.NoHostAvailableException:所有主机尝试查询失败(尝试:[/54.221.241.107])
我确信配置是正确的。我在 cassandra.yaml 中设置了配置:
我的 Cassandra 安装是 AWS 上 EC2 实例上的标准安装。我已将 AWS 配置为允许端口 9042。
Cassandra 在 Windows Server 2008 R2 上运行,我还将防火墙配置为 9042 上的入站和出站连接。
我的代码如下所示:
我不知道该怎么办了,因为我总是收到这个错误。有什么建议么?
timeout - cassandra 中的 read_request_timeout_in_ms
可以在 cassandra.yaml 中指定读取请求超时:
我需要对此超时进行一些澄清。
根据客户端请求文档,读取请求可以有两种类型:外部请求或后台修复请求。
Q1:这种超时是否适用于两种类型的请求,每种情况会发生什么情况?
现在,只关注外部读取。同样,在上面链接的文档中,它说在读取过程中,会启动一个后台进程以保持一致性。
Q2:对于外部读取请求,超时是否包括后台进程所用的时间?
我问这些问题是因为我想对每个读取请求施加超时,但我不希望它影响与读取相关的任何其他后台进程。
cassandra - PRIMARY KEY 部分 colname 不能受 IN 关系限制
我的 CQL3 表是这样的
我在其中插入了一些值。现在,当我尝试做这样的事情时:
这本质上是
我收到以下异常:
在 CQL3 的文档中,写到
“此外,IN 关系只允许在分区键的最后一列和完整主键的最后一列。”
所以好像不支持!!如果是,那么如果我必须使用 IN 之类的东西一次相等多个值,那该怎么办?