从Cassandra中检索数据块

时间:2017-02-04 21:57:35

标签: java apache-spark cassandra

我有一张表,其中包含Cassandra中约500M的记录。我需要传递所有这些记录并进行一些处理,然后将已处理的记录插入到其他表中。由于内存问题,我需要将这些记录检索为块。有没有办法做到这一点? 例如,在第一个块中我需要获得第一个2M,然后在第二个块中我需要检索第二个2M,依此类推。

1 个答案:

答案 0 :(得分:3)

如果您只是运行常规execute方法,则会返回ResultSet。正如文档中所述:

  

通常会对ResultSet的行的检索进行分页(获取结果的第一页,并且只有在消耗了第一个结果后才会获取下一个结果页)。可以通过QueryOptions.setFetchSize(int)全局配置页面大小,也可以使用Statement.setFetchSize(int)配置per语句。虽然在需要时会自动(并透明地)获取新页面,但可以通过fetchMoreResults()尽早强制检索下一页。

因此,您可以运行查询以询问所有数据,并将获取大小设置为块大小。然后遍历您的ResultSet,直到获得大量记录,处理,插入,然后再次开始迭代。