如何在scala fs2中处理大量数据?

x33g5p2x  于 2021-07-14  发布在  Java
关注(0)|答案(0)|浏览(193)

我们有一个scala实用程序,它使用fs2库从数据库中读取数据,然后将数据写入csv格式的文本文件。然后它对几个列进行一些处理并创建最终的文件。所以这是一个两步的过程。
从数据库中读取数据并创建一个data\u tmp csv文件。
处理tmp文件中的几个列,并在csv文件中创建最终文件数据。
我们使用类似于at link的代码:https://levelup.gitconnected.com/how-to-write-data-processing-application-in-fs2-2b6f84e3939c

Stream.resource(Blocker[IO]).flatMap {  blocker =>
  val inResource = getClass.getResource(in) // data_tmp file location
  val outResource = getClass.getResource(out) // data_final file location
  io.file
    .readAll[IO](Paths.get(inResource.toURI), blocker, 4096)
    .through(text.utf8Decode)
    .through(text.lines)
    ..... // our processing logic here
    .through(text.utf8Encode)
    .through(io.file.writeAll(Paths.get(outResource.toURI), blocker))

}

到目前为止,这是因为我们没有超过5公里的记录。
现在我们有了一个新的需求,我们期望从query到db的数据在50k到1000k的范围内。
所以我们要创建多个数据最终文件,比如数据最终文件1,数据最终文件2。。。等等。
每个输出文件不应该超过一个特定的大小,比如说2MB。
因此,应该以2MB的块创建数据。
请帮助我修改上面的代码片段,以便我们可以从单个大数据\u tmp csv文件创建多个输出文件。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题