问题标签 [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.
performance - Cassandra:如何使用 CQL 插入具有良好性能的新宽行
我正在评估卡桑德拉。我正在使用 datastax 驱动程序和 CQL。
我想存储一些具有以下内部结构的数据,其中每次更新的名称都不同。
所以时间应该是列键,名称应该是行键。我用来创建这个表的 CQL 语句是:
我希望架构是这种方式以便于查询。我还必须偶尔存储超过 65000 行的更新。所以使用 cassandra list/set/map 数据类型不是一个选项。
我必须能够每秒处理至少 1000 个宽行插入,并且名称/值对的数量不同但很大(约 1000 个)。
问题如下:我编写了一个简单的基准测试,它执行 1000 个宽行插入,每个行插入 10000 个名称/值对。我使用 CQL 和 datastax 驱动程序的性能非常缓慢,而不使用 CQL(使用 astyanax)的版本在同一测试集群上具有良好的性能。
我已经阅读了这个相关的问题,并且在这个问题的接受答案中建议您应该能够通过使用cassandra 2 中提供的批处理准备语句自动快速地创建一个新的宽行。
所以我尝试使用这些,但性能仍然很慢(对于在 localhost 上运行的小型三节点集群,每秒插入两次)。我是否遗漏了一些明显的东西,或者我必须使用较低级别的节俭 API?我已经在 astyanax 中使用 ColumnListMutation 实现了相同的插入,并且每秒插入大约 30 次。
如果我必须使用较低级别的 thrift API:
它实际上已被弃用,还是因为它的级别较低而使用起来不方便?
我可以使用 CQL 查询使用 thrift api 创建的表吗?
下面是 scala 中的一个自包含代码示例。它只是创建一个批处理语句,用于插入具有 10000 列的宽行并重复计算插入性能。
我使用了 BatchStatement 选项和一致性级别,但没有什么能让我获得更好的性能。
我唯一的解释是,尽管批处理由准备好的语句组成,但条目被逐一添加到行中。
这是 astyanax 代码(从astyanax 示例修改),它在本质上以 15 倍的速度执行相同的操作。请注意,这也不使用异步调用,因此这是一个公平的比较。这要求列族已经存在,因为我还没有弄清楚如何使用 astyanax 创建它,并且该示例没有任何用于创建列族的代码。
更新:我在cassandra-user邮件列表中找到了这个线程。在进行大的宽行插入时,CQL 似乎存在性能问题。有一个工单CASSANDRA-6737来跟踪这个问题。
更新 2:我已经试用了 CASSANDRA-6737 附带的补丁,我可以确认这个补丁完全解决了这个问题。感谢 DataStax 的 Sylvain Lebresne 如此迅速地解决了这个问题!
scala - Datastax 1.2 java driver
I'm running DSE 3.2.1 and using datastax java driver cassandra-driver-core-1.0.5-dse.jar
Can confirm DSE is up and listener configured:
But cannot connect using this driver. Scala code:
Getting this excep:
Any ideas? Do I use port 9160 or 9042 with this driver? Using reference code examples from here: http://www.datastax.com/documentation/developer/java-driver/1.0/java-driver/quick_start/qsSimpleClientCreate_t.html
TIA, JM.
java - JSP:Foreach 自定义对象
我正在使用 Datastax Java 驱动程序和 JSP。
在java中,我可以使用这段代码。ResultSet 和 Row 都来自 Datastax java 驱动程序。
当我在这段代码中使用 JSP 时
我收到这个错误
到目前为止,解决方案是将它们作为列表发送。但是阅读整个列表需要两次。无论如何我可以发送这个 ResultSet 并在 JSP 中处理它吗?
cassandra - 如何在cassandra中选择计数器值
在 CQL 中(或更重要的是,在 datastax java 驱动程序中)我如何查询计数器的值,例如“WHERE counter > 5”?
谢谢,
java - 有没有一种检查 Datastax Session.executeAsync() 是否引发异常的好方法?
我试图通过调用session.executeAsync()
而不是session.execute()
数据库写入来加速我们的代码。
我们有数据库连接可能断开的用例,当前execute()
当连接丢失(集群中没有主机可达)时,前一个会抛出异常。我们可以捕获这些异常并重试或将数据保存在其他地方等......
使用executeAsync()
,看起来没有任何方法可以满足这个用例 -ResultSetFuture
需要访问返回的对象以检查结果,这将破坏首先使用的目的executeAsync()
......
有没有办法在 executeAsync() 调用的任何地方添加一个监听器(或类似的东西),它将异步通知其他一些代码数据库写入失败?
这有关系吗?数据税 1.0.2 Java 1.7.40
cassandra - 在 Cassandra 中使用一组值准备好的语句
我正在使用 datastax Cassandra 2.0 驱动程序,并且正在使用准备好的和绑定的语句。假设我想查询这样的内容:
其中 UUID1、UUID2、UUID3 是 UUID 值。使用绑定语句执行此操作的编程方式是什么。目前我正在尝试以下方式:
这目前正在返回错误的结果。任何建议如何正确格式化查询?
cql - DataStax Java Driver 循环重复行
我正在开发一种使用 cassandra 作为数据库的新产品。现在安装在单个 ubuntu 13.10 开发笔记本电脑核心 i7 上。我有一个列族和一个查询。在 cqlsh 中执行的这个查询给出 33267 行。在我的 java 程序上执行,使用 datastax java driver 2.0,一些执行给出正确的行,其他的进入无限循环,一次又一次地重复相同的行:
在分析应用程序时,我看到新 I/O 工作线程之间的锁争用,98% 的时间花在 sun.nio.ch.EPollArrayWrapper.poll 方法上。有人遇到过这个问题并知道解决方案吗?有人可以直接链接到下载 cassandra-driver-core-2.0.0.src.jar 的链接,以便我可以使用源代码调试错误并报告给 datastax?这是一项令人兴奋的技术,但在我的职业生涯中,生产数据库第一次给我带来如此不可靠的行为。顺便说一句:原始查询有一个我删除的订单。使用 order by,我得到了这个异常:线程“main”com.datastax.driver.core.exceptions.InvalidQueryException 中的异常:无法使用 ORDER BY 和对分区键的 IN 限制分页查询;您必须删除 ORDER BY 或 IN 并对客户端进行排序,或禁用此查询的分页昨天处理类似查询和 cqlsh 时,添加的顺序没有问题。我只是谈论这个问题,因为也许两者都是相关的。问候
cassandra - Datastax java驱动程序会话挂起
几个月来第二次出现以下问题。尝试使用 java 驱动程序打开和执行查询的会话挂起特定线程。结果,这个特定的线程永远等待并导致线程锁定问题。这已使用应用服务器重新启动解决。但是,不能手动干预这类驱动程序问题。有人对此有想法吗?
sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(LockSupport.java:158) java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:747) java.util .concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:905) java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1217) com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture .java:292) com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116) com.google.common.util.concurrent.Uninterruptibles.getUninterruptible(Uninterruptibles.java:135) com.datastax.driver .core.ResultSetFuture.getUninterruptibly(ResultSetFuture.java:181) com.datastax.driver.core.Session。执行(Session.java:111)com.datastax.driver.core.Session.execute(Session.java:80)
cassandra - Cassandra BatchStatement 行为 - datastax java 驱动程序
我想澄清一下 BatchStatement 的执行。
我已将许多针对不同表的插入/更新语句添加到批处理中。当我执行批处理时,我希望,如果任何一个查询失败,所有其他插入/更新都不应该成功。但它没有发生。我可以看到部分更新/插入。
我怎样才能做到这一点?[如果任何一个查询失败,则不应发生该批次的所有更新/插入。]
如何获取/打印导致批处理执行失败的确切问题查询?
LOGGED 批处理语句的目的是什么?
http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/BatchStatement.Type.html#LOGGED
在 BatchStatement 中启用跟踪的目的是什么?如何打印跟踪以调试查询问题?
http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/Statement.html#enableTracing%28%29
我的代码看起来像,
谢谢,
拉梅什
cassandra - Cassandra 中的原子批处理
批处理语句在 cassandra 中是原子的是什么意思?准确地说,文档在本质上有点令人困惑。这是否意味着查询在集群中的节点之间是原子的?
比如说,我有一个包含 100 个查询的批次。如果批处理中的第 40 个查询失败,那么批处理中执行的 39 个查询会发生什么?
我知道在后台创建了一个批处理日志,它将处理部分批处理的一致性。它是否删除了其余 39 个条目并提供了批处理查询所需的原子性质。
在 MYSQL 中,我们将 autocommit 设置为 false,因此我们可以回滚。在这些情况下,cassandra 会回滚吗?