我有一个非常大的 CSV 文件(1GB+),它有 100,000 行。
我需要编写一个 Java 程序来解析 CSV 文件中的每一行,以创建要发送的 HTTP 请求的正文。
换句话说,我需要发送 100,000 个 HTTP 请求,这些请求与 CSV 文件中的行相对应。如果我在单个线程中执行这些操作将会很长。
我想创建 1,000 个线程来执行 i) 从 CSV 文件中读取一行,ii) 创建一个 HTTP 请求,其正文包含读取行的内容,以及 iii) 发送 HTTP 请求并接收响应。
这样,我需要将 CSV 文件拆分为 1,000 个块,并且这些块之间不应有重叠的行。
这种拆分过程的最佳方法是什么?
同时在多个位置读取单个文件不会让你的速度更快(但它可能会大大减慢你的速度)。
不是从多个线程读取文件,而是从单个线程读取文件,并并行化加工这些行。单个线程应该逐行读取 CSV,并将每一行放入队列中。然后,多个工作线程应该从队列中取出下一行,对其进行解析,转换为请求,并根据需要同时处理该请求。然后,工作的分割将由单个线程完成,确保没有丢失的行或重叠。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)