繁体   English   中英

如何使用 Spring Data Cassandra 从 cassandra 数据库读取超过百万条记录并使用 Spring Batch 将其写入文件?

[英]How to read more than million records from cassandra Database using Spring Data Cassandra and write it into a file using Spring Batch?

我需要使用 Spring Data Cassandra 从 Cassandra 数据库读取超过一百万条记录,并使用 Spring Batch 将其写入文件。 现在我正在使用 Spring data Cassandra 的分页功能,但它似乎正在执行select * from table然后过滤记录。 这可能不是一个好的选择,因为该表将有超过一百万条记录,并且一次将它们全部加载到内存中会很糟糕。

我还需要将它与 Spring Batch 集成,以便我能够将每条记录都正确地放入一个文件中。 我正在寻找一种从 Cassandra 读取数据并将其分块保存在文件中的方法。 这样做的最佳方法是什么?

这是我用来使用分页从 Cassandra 获取记录的代码:

public void startJob() {
    Pageable pageable = PageRequest.of(0, pageSize);
    Slice<FLProductATPEntity> slice = repository.findAll(pageable);
    List<FLProductATPEntity> entityList;
    if (slice.hasContent()) {
        entityList = slice.getContent();
        entityList.forEach(entity -> log.info("Entity: {}", entity));           
    }
    while (slice.hasNext()) {
        slice = repository.findAll(slice.nextPageable());
        entityList = slice.getContent();
        entityList.forEach(entity -> log.info("Entity: {}", entity));
    }
}

我正在寻找一种从 Cassandra 读取数据并将其分块保存在文件中的方法

Spring Batch 提供了RepositoryItemReader ,您可以将它与您的 cassandra PagingAndSortingRepository作为委托一起使用。 因此,您可以使用此读取器和FlatFileItemWriter创建一个面向块的步骤,以将数据写入文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM