我正在尝试完成类似于此线程中描述的内容:如何根据第一列的内容拆分巨大的 csv 文件?
在那里,最好的解决方案似乎是使用 awk 来完成这项工作。但是,我正在处理非常庞大的 csv 文件,并且我想在不创建新副本的情况下拆分文件,因为磁盘 I/O 速度正在扼杀我。有没有办法在不创建新副本的情况下拆分原始文件?
我正在尝试完成类似于此线程中描述的内容:如何根据第一列的内容拆分巨大的 csv 文件?
在那里,最好的解决方案似乎是使用 awk 来完成这项工作。但是,我正在处理非常庞大的 csv 文件,并且我想在不创建新副本的情况下拆分文件,因为磁盘 I/O 速度正在扼杀我。有没有办法在不创建新副本的情况下拆分原始文件?
我不太确定你在问什么,但如果你的问题是:“我可以在磁盘上获取一个大文件并‘就地’拆分它,这样我就可以得到许多小文件,而不必将这些小文件写入磁盘?”,那么答案是否定的。
您将需要遍历第一个文件并将“段”作为新文件写回磁盘,无论您为此使用 awk、Python 还是文本编辑器。不过,您不需要事先制作第一个文件的副本。
“分割文件”仍然需要 RAM 和磁盘 I/O。没有办法解决这个问题。这就是世界的运作方式。
但是,您当然可以减少 I/O 绑定进程对系统的影响。一些明显的解决方案是:
如果您正在处理文件,那么您正在处理 I/O。您可以在系统限制内充分利用它。