小编典典

如何将CSV文件拆分为多个块并在Java代码中并行读取这些块

java

我有一个非常大的CSV文件(超过1GB),它有100,000行。

我需要编写一个Java程序来解析CSV文件中的每一行,以创建用于发送HTTP请求的正文。

换句话说,我需要发出100,000个与CSV文件中的行相对应的HTTP请求。如果我在单个线程中执行这些操作将非常漫长。

我想创建1,000个线程,以执行以下操作:i)从CSV文件读取一行,ii)创建一个HTTP请求,该请求的正文包含读取行的内容,并且iii)发送HTTP请求并接收响应。

这样,我需要将CSV文件拆分为1,000个大块,这些大块之间应该没有重叠的行。

进行拆分的最佳方法是什么?


阅读 601

收藏
2020-11-16

共1个答案

小编典典

同时读取多个位置的单个文件不会让您走得更快(但可能会大大降低您的速度)。

与其从多个线程读取文件,不如从单个线程读取文件,并并行 处理
这些行。单线程应逐行读取CSV,并将每一行放入队列中。然后,多个工作线程应从队列中取出下一行,进行解析,转换为请求,并根据需要并发处理请求。然后,将通过单个线程来完成工作拆分,确保没有丢失的行或重叠。

2020-11-16