获取Cassandra选择查询

时间:2016-09-27 04:13:34

标签: java cassandra

根据Cassandra文档,使用execute获取select查询的结果并不能保证返回完整的结果。

  

ResultSet execute(Statement statement)执行提供的查询。   此方法阻止,直到至少收到一些结果   数据库。但是,对于SELECT查询,它不能保证   结果已全部收到。但它确实保证了一些   已从数据库收到响应,特别是   保证如果请求无效,将抛出异常   通过这种方法。

因此,如果我有一个应该返回查询的完整结果的API,我将如何实现它?现在我创建一个Statement并使用Session类的execute方法来获得结果。但是,基于文档似乎并不总是有效。

1 个答案:

答案 0 :(得分:3)

文档描述了驱动程序的分页行为。当它表示没有完整检索整个结果时,这意味着协调器还没有完全实现整个结果集。这样做是为了防止在协调器上创建大量对象。

https://docs.datastax.com/en/drivers/java/3.0/com/datastax/driver/core/ResultSet.html

您将看到ResultSet(执行结果)有多种方法。但只有一个all()将遍历整个结果集并立即将其下载到驱动程序。

如果您使用iterator,则在迭代器上调用next时,将从服务器中批量分页结果。这意味着只有部分ResultSet会被一次性下拉到驱动程序,从而减少服务器上的负载,并允许您使用大型数据集而不将其全部拉入ram。