在 Cassandra 中使用对象映射器批量插入
Batch insertion using object mapper in Cassandra
使用 cassandra 对象映射器 api 想做一个批处理持久化。
对于单个对象,它工作正常。
Mapper<MyObj> mapper = new MappingManager(getSession()).mapper(MyObj.class);
mapper.save(myObj);
对于批量更新,我尝试过这种方式,但理想情况下,Cassandra 认为我正在保留一个列表,所以它给出了类似 @Table 注释的异常,这是预期的行为
Mapper<List<MyObj>> mapper = new MappingManager(getSession()).mapper(List.class);
myObjList.add(myObj1)
myObjList.addd(myObj2)
mapper.save(myObjList);
有没有办法在 cassandra 中使用批处理实现相同的功能?
注意:或者我可以通过使用 for 循环重复第一步来做到这一点,但我正在寻找批量插入 @ObjectMapper。
Datastax 对象映射器框架中没有批量插入实用程序。
您可以像您建议的那样在 for 循环中一个接一个地插入您的实体,或者寻找更高级的映射框架,例如 Achilles。
这是我想在上述线程中从 @adutra 讨论中总结的片段。
您可以利用 cassandra-core 驱动程序附带的 BatchStatement,它与 cassandra-mapper 非常兼容。
Mapper<MyObj> mapper = new MappingManager(getSession()).mapper(MyObj.class);
BatchStatement batch = new BatchStatement();
batch.add(mapper.saveQuery(myObj1));
batch.add(mapper.saveQuery(myObj2));
session.execute(batch);
使用 cassandra 对象映射器 api 想做一个批处理持久化。
对于单个对象,它工作正常。
Mapper<MyObj> mapper = new MappingManager(getSession()).mapper(MyObj.class);
mapper.save(myObj);
对于批量更新,我尝试过这种方式,但理想情况下,Cassandra 认为我正在保留一个列表,所以它给出了类似 @Table 注释的异常,这是预期的行为
Mapper<List<MyObj>> mapper = new MappingManager(getSession()).mapper(List.class);
myObjList.add(myObj1)
myObjList.addd(myObj2)
mapper.save(myObjList);
有没有办法在 cassandra 中使用批处理实现相同的功能?
注意:或者我可以通过使用 for 循环重复第一步来做到这一点,但我正在寻找批量插入 @ObjectMapper。
Datastax 对象映射器框架中没有批量插入实用程序。
您可以像您建议的那样在 for 循环中一个接一个地插入您的实体,或者寻找更高级的映射框架,例如 Achilles。
这是我想在上述线程中从 @adutra 讨论中总结的片段。
您可以利用 cassandra-core 驱动程序附带的 BatchStatement,它与 cassandra-mapper 非常兼容。
Mapper<MyObj> mapper = new MappingManager(getSession()).mapper(MyObj.class);
BatchStatement batch = new BatchStatement();
batch.add(mapper.saveQuery(myObj1));
batch.add(mapper.saveQuery(myObj2));
session.execute(batch);