当前位置: 首页 > 知识库问答 >
问题:

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

董昕
2023-03-14

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

我还需要将它与Spring Batch集成,这样我就能够将每个记录正确地设置为一个文件。我正在寻找一种方法从卡桑德拉读取数据,并将其保存在文件中的块。最好的办法是什么?

下面是我使用分页从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));
    }
}

共有1个答案

丰辰沛
2023-03-14

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

Spring Batch提供了RepositoryItemReader,您可以在cassandraPagingAndSortingRepository中作为委托使用该RepositoryItemReader。因此,您可以使用此读取器和FlatFileItemWriter创建面向块的步骤,以便将数据写入文件。

 类似资料:
  • 问题内容: 我有一个应用程序,我想从excel读取数据,将其插入数据库,然后为特定用户生成pdf报告。我进行了很多搜索,但没有具体说明这两种情况。 问题答案: 使用PHPExcel库读取Excel文件并将数据传输到数据库中 一切都变得非常取决于您的数据库以及如何在其中构造数据

  • 问题内容: 有一个数据库,它在一个表中大约包含200万条记录。我从我的Java代码中运行查询,例如“ select * from table”。是否将从结果集中的数据库中获取完整数据。或不 。如果是,那么它将如何工作,我想学习此检索工作, 请让我知道,我在某处了解到它将从数据库中检索完整的数据并将其存储在临时存储中,并在输出中显示出来。还是与J2C有关 问题答案: 它会从结果集中的数据库中获取完整

  • 我有一个springbatch应用程序,我将连接到一个网络数据库进行阅读。我发现的大多数示例都嵌入了数据库,用于独立测试。我不想那样做。我不确定配置是否类似。以下是我所拥有的最具德国特色的部分(带有一些异议): ,然后从应用程序启动: 我没有配置数据源。我不确定,因为我的基本上只是一个到远程网络数据库的客户端连接,它的配置是否会与我找到的各种示例的嵌入式设置不同。所以我自然会出错(如下)。我只是在

  • 问题内容: 我需要读取文件路径为“ C:\ file.pdf”的pdf文件,并将其写入outputStream。最简单的方法是什么? ................................................... ................................................... 问题答案: import java.io.*; 到目前为止

  • 问题内容: 我只需要使用Hibernate读取MySQL数据库中表中的每一行,并基于它编写一个文件。但是有9000万行,它们很大。因此,似乎以下情况将是适当的: 问题是上面的方法将尝试将所有9000万行加载到RAM中,然后再进入while循环…这将导致OutOfMemoryError杀死我的内存:Java堆空间异常:(。 所以我想ScrollableResults不是我想要的吗?处理此问题的正确方