【问题标题】: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 将其写入文件?
【发布时间】:2020-04-13 23:41:15
【问题描述】:

我需要使用 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));
    }
}

【问题讨论】:

  • 我不知道 Spring Data Cassandra 是否有响应式支持,但如果有,这似乎是一个完美的用例。

标签: java spring-boot cassandra spring-batch spring-data-cassandra


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-02-22
    • 2020-02-14
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 2017-09-01
    • 2017-01-24
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多