问题标签 [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.

0 投票
3 回答
9653 浏览

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 如此迅速地解决了这个问题!

0 投票
0 回答
519 浏览

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.

0 投票
0 回答
323 浏览

java - JSP:Foreach 自定义对象

我正在使用 Datastax Java 驱动程序和 JSP。

在java中,我可以使用这段代码。ResultSet 和 Row 都来自 Datastax java 驱动程序。

当我在这段代码中使用 JSP 时

我收到这个错误

到目前为止,解决方案是将它们作为列表发送。但是阅读整个列表需要两次。无论如何我可以发送这个 ResultSet 并在 JSP 中处理它吗?

0 投票
2 回答
1243 浏览

cassandra - 如何在cassandra中选择计数器值

在 CQL 中(或更重要的是,在 datastax java 驱动程序中)我如何查询计数器的值,例如“WHERE counter > 5”?

谢谢,

0 投票
2 回答
4988 浏览

java - 有没有一种检查 Datastax Session.executeAsync() 是否引发异常的好方法?

我试图通过调用session.executeAsync()而不是session.execute()数据库写入来加速我们的代码。

我们有数据库连接可能断开的用例,当前execute()当连接丢失(集群中没有主机可达)时,前一个会抛出异常。我们可以捕获这些异常并重试或将数据保存在其他地方等......

使用executeAsync(),看起来没有任何方法可以满足这个用例 -ResultSetFuture需要访问返回的对象以检查结果,这将破坏首先使用的目的executeAsync()......

有没有办法在 executeAsync() 调用的任何地方添加一个监听器(或类似的东西),它将异步通知其他一些代码数据库写入失败?

这有关系吗?数据税 1.0.2 Java 1.7.40

0 投票
1 回答
3194 浏览

cassandra - 在 Cassandra 中使用一组值准备好的语句

我正在使用 datastax Cassandra 2.0 驱动程序,并且正在使用准备好的和绑定的语句。假设我想查询这样的内容:

其中 UUID1、UUID2、UUID3 是 UUID 值。使用绑定语句执行此操作的编程方式是什么。目前我正在尝试以下方式:

这目前正在返回错误的结果。任何建议如何正确格式化查询?

0 投票
1 回答
2252 浏览

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 时,添加的顺序没有问题。我只是谈论这个问题,因为也许两者都是相关的。问候

0 投票
1 回答
1168 浏览

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)

0 投票
1 回答
4221 浏览

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

我的代码看起来像,

谢谢,

拉梅什

0 投票
4 回答
6271 浏览

cassandra - Cassandra 中的原子批处理

批处理语句在 cassandra 中是原子的是什么意思?准确地说,文档在本质上有点令人困惑。这是否意味着查询在集群中的节点之间是原子的?

比如说,我有一个包含 100 个查询的批次。如果批处理中的第 40 个查询失败,那么批处理中执行的 39 个查询会发生什么?

我知道在后台创建了一个批处理日志,它将处理部分批处理的一致性。它是否删除了其余 39 个条目并提供了批处理查询所需的原子性质。

在 MYSQL 中,我们将 autocommit 设置为 false,因此我们可以回滚。在这些情况下,cassandra 会回滚吗?