我们有一个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文件创建多个输出文件。
暂无答案!
目前还没有任何答案,快来回答吧!