如何使用Java在Cassandra中实现批处理

时间:2019-07-01 09:35:51

标签: java spring-boot cassandra batch-processing

当前,我已经使用springboot设置了一个项目,我可以使用CassandraRepository来查询cassandra数据库中的数据。

但是现在,我遇到了一些问题:

  1. 如何在具有CassandraRepository的cassandra中使用BatchStatment?
  2. 如何通过CassandraRepository创建语句?

我想使用BatchStatment.add(Statement)来实现批量查询。 MappingManager.getSession().execute(statement)

2 个答案:

答案 0 :(得分:3)

要使用Springs版本,请使用CassandraBatchOperations中的CassandraTemplate.batchOps()

MappingManager来自DataStax ORM,因此有点混在一起。虽然它不直接支持批处理(因为这样做通常是错误的事情),但是您可以调用mapper.saveQuery(obj)方法来获取原始Statement,并将其添加到您自己创建的new BatchStatement()中,并将其传递给Session.execute

确保确实需要批次(出于原子性)。它们速度慢,价格昂贵,并且无法像普通刀片一样缩放。

答案 1 :(得分:0)

写入cassandra的最佳方法是通过并发异步写入。(由Datastax驱动程序支持)。

批处理操作是否包含混合分区键,如果是,则批处理将比异步写入慢

对于混合分区批处理查询,我们实现了令牌感知批处理语句方法,该方法在处理大量数据时确实表现出良好的性能。

点击该链接以获取详细信息: https://dzone.com/articles/efficient-cassandra-write