我有一个巨大的csv文件,我必须处理这个文件并做一些数据处理。现在,我正在缓冲区中读取/加载文件,然后进行数据处理工作。在文件非常大的情况下,我发现这种方法效率低下。加载/读取文件块,然后继续处理它,直到文件被完全处理,会更好吗?我需要建议。
发布于 2020-08-15 16:38:54
如果您还在考虑一台计算机的范围,您可以使用线程、生产者/消费者模式或类似的模式进行扩展。基本上,有一个线程只读取文件,将行放入队列,并有N个线程从队列中选择元素并对其进行处理。这样,您将被IO和/或CPU限制。如果对队列大小设置了限制,您可以限制内存使用,即当队列很大时,生产者端等待一点,然后继续。
要进行扩展,您应该更改生成大型输入文件的过程,以生成许多更小的文件,称为切分。您可以查看数据流框架(如Beam ),以帮助您在许多计算机之间分发处理。
https://softwareengineering.stackexchange.com/questions/414835
复制相似问题