问题标签 [astyanax]
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.
cassandra - Astyanax ClusterContext 和/或 KeyspaceContext?
目前我正在以这种方式启动 ClusterContext:
在单节点开发环境中运行。我正在使用 ClusterContext,因为我还想创建一个键空间、列族等。
我是否还需要启动 KeyspaceContext?如果是这样,出于什么目的,或者单个 ClusterContext 足以用于键空间/列族管理和读/写场景?
如果我确实启动了 KeyspaceContext,我会看到,根据连接池监视器,添加了 2 个主机并处于活动状态。如果我关闭单个 Cassandra 节点,我仍然会看到 1 标记为活动,这令人困惑。
谢谢。
cassandra - Cassandra 以 OutOfMemory (OOM) 错误终止
我们在 AWS 上有一个 3 节点的 cassandra 集群。这些节点运行 cassandra 1.2.2 并具有 8GB 内存。我们没有更改任何默认堆或 GC 设置。所以每个节点都分配了 1.8GB 的堆空间。行很宽;每行存储大约 260,000 列。我们正在使用 Astyanax 读取数据。如果我们的应用程序尝试同时从 10 行或更多行中读取 80,000 列,则某些节点会耗尽堆空间并以 OOM 错误终止。这是错误消息:
每列中的数据小于 50 字节。添加所有列开销(列名 + 元数据)后,不应超过 100 个字节。所以从 10 行中读取 80,000 列意味着我们正在读取 80,000 * 10 * 100 = 80 MB 的数据。它很大,但不足以填满 1.8 GB 堆。所以我想知道为什么堆越来越满。如果数据请求太大而无法填写合理的时间,我希望 Cassandra 返回 TimeOutException 而不是终止。
一种简单的解决方案是增加堆大小,但这只会掩盖问题。读取 80MB 的数据不应使 1.8GB 堆满。
是否有其他一些 Cassandra 设置可以调整以防止 OOM 异常?
cassandra - 通过 astyanax 从复合键中检索数据
我在 cassandra 中非常天真并且正在使用 astyanax
CREATE TABLE 员工(empID int、deptID int、first_name varchar、last_name varchar、PRIMARY KEY (empID, deptID));
我想获取查询的值: select * from employees where empID =2 and deptID = 800;
我应该如何做到这一点
cassandra - Astyanax 1.56.37 中的 InvalidRequestException(为什么:比较器的字节太多)
在使用 Asytanax 对复合列执行查询时,请参阅InvalidRequestException(为什么:比较器的字节数过多)
我使用 astyanax 1.56.37 和 cassandra 1.2.5 得到了确切的问题
我没有看到https://issues.apache.org/jira/browse/CASSANDRA-4377的修复工作。仔细检查:此修复程序是否存在于 1.2.5 中?
cassandra - 在 cassandra (astyanax) 中使用 cql 准备好的语句时出错
我正在试验 astyana 写操作,并为此使用 cqlsh。如果我只是使用查询,我可以得到结果
但是,如果我使用准备好的语句来做同样的事情,我会得到以下错误。
我收到以下错误
当我尝试将时间戳存储到表中时,我认为它是错误的。但是我在preparedStatement 中没有发现任何足以存储时间戳的内容。数据库中字段的数据类型是“timestamp”。
cassandra - 带有值()的 Astyanax 已准备好的语句无法正常工作
今天我迁移到 Astyanax 1.56.42 并发现,准备好的语句上的 withValues() 似乎不适用于SQL SELECT...WHERE...IN ()。
如果我的 ArrayList 包含多个条目,则会导致错误
我究竟做错了什么?有没有其他方法来处理SQL SELECT...WHERE...IN () - 语句或者我发现了一个错误?
最好的问候克里斯
cassandra - 当单个种子节点关闭时,Astyanax 请求在 4 节点集群中失败
我有一个 4 节点 Cassandra 集群。单个节点充当 Astyanax 连接池的种子节点,在构建 AstyanaxContext 时通过 setSeeds(...) 方法提供。我还插入了我自己的连接池监控实现。这向我显示了添加的一个主机(种子节点),但它没有向我显示其他三个节点。当关闭 Astyanax 的种子节点时,例如通过 nodetool 禁用此特定节点的节俭,任何对 Cassandra 的 Astyanax 请求都会失败。我认为连接池通过种子节点了解集群的外观,并且不需要种子节点一直启动并运行?
我使用 RING_DESCRIBE 作为 NodeDiscoveryType 和 TOKEN_AWARE 作为 ConnectionPoolType。
maven - 静态链接 maven 和 gradle 依赖
我正在使用 hector & astyanax 项目。这些项目过去需要 maven,现在 astyanax 需要 gradle。
我想将这些项目之一静态链接到我的 java 项目(不是使用 maven/gradle 构建的)。我对每次发布新版本时都更新 astyanax 的版本不感兴趣。我对我自己的项目的 mavenizing/gradelizing 不感兴趣。
因此,出现了两个问题: 1. 获取 astyanax 罐子。2. 获得依赖罐。
起初,没有时间彻底了解 maven(离开我的草坪!),我将全局 .maven 目录中的所有 jar 文件复制到我的项目中,并链接到它们。问题是,这是一个非常混乱的解决方案。
有没有更简单的方法来获取使用 gradle/maven 库所需的所有 jar?(虽然我不介意使用 gradle 来构建 astyanax,但我不想用它来构建我自己的项目)。
获取 jars 进行分发,似乎是一个非常基本的用例,我在这里错过了一个简单的方法吗?
java - Cassandra 更新并不总是一致的
我正在使用Astyanax 1.56.42和最新版本的Datastax 社区(Apache Cassandra 1.2.6)在一个新的两节点 Cassandra 集群和一个两节点 Glassfish 集群上,我在编写一些新用户时发现了一些问题会话条目。
我的键空间设置是:
我正在使用以下方法对我的用户会话表进行更新:
然后尝试通过以下方式准确阅读此会话:
此读取有时会失败(= 没有返回行)。“有时”意味着如果我的集群几乎空闲,它根本不会失败。但是,尽管在 UPDATE 语句中将 setConsistencyLevel-Attribute 设置为“ALL”,但如果负载过重,它会更频繁地执行此操作。
有趣的是:延迟“解决”了这个问题。如果我稍后尝试在 cqlsh 上执行手动 SELECT,则会出现新会话 - 但对于我的第二个查询来说为时已晚。
我究竟做错了什么?这是一个错误吗?我如何确定 ConsistencyLevel.CL_ALL 可以按需要工作?
(我的问题与Cassandra 更新工作不一致有关,但我正在做一些不同的事情。)
编辑:我的密钥空间是通过使用设置的:
编辑#2:我已将所有查询的一致性级别设置为“ALL”,并将replication_factor切换为1。此外,我已切换到一个(应用程序服务器)客户端以确保这与客户端无关-时间戳。读取和写入是同步完成的,但问题仍然随机发生。
cassandra - 如何使用 astyanax 从 cassandra CF 读取所有 1000 行
我们有一个只有大约 1000 行的 CF。astyanax 有没有办法读取所有 1000 行?节俭甚至支持吗?
谢谢,院长