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

问题描述 投票:0回答:1

我需要使用Spring Data Cassandra从Cassandra数据库中读取超过一百万条记录,并使用Spring Batch将其写入文件中。现在,我正在使用Spring数据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));
    }
}
java spring-boot cassandra spring-batch spring-data-cassandra
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.