【问题标题】:Fastest way to sort very large files preferably with progress对非常大的文件进行排序的最快方法,最好有进度
【发布时间】:2018-11-11 04:10:10
【问题描述】:
我有一个 200GB 的平面文件(每行一个字),我想对文件进行排序,然后删除重复项并从中创建一个干净的最终 TXT 文件。
我尝试了sort 和--parallel,但它运行了 3 天,我感到沮丧并终止了该进程,因为我没有看到它在 /tmp 中创建的文件块有任何变化。
我需要以某种方式查看进度并确保它没有卡住并且可以正常工作。最好的方法是什么?是否有专门用于此类事情的 Linux 工具或开源项目?
【问题讨论】:
标签:
multithreading
sorting
open-source
large-data
large-files
【解决方案1】:
我不使用 Linux,但如果这是 Gnu 排序,您应该能够从另一个窗口看到它创建的临时文件以监控进度。并行功能仅在对临时文件进行排序和创建初始列表的初始过程中有所帮助。之后,默认为 16 路合并。
例如,第一遍是创建大小约为 1GB 的临时文件。在这种情况下,Gnu sort 最终会在开始合并阶段之前创建 200 个这些 1GB 的临时文件。 16 路合并意味着一次合并 16 个临时文件,创建大小为 16GB 的临时文件,依此类推。
因此,监控进度的一种方法是监控这些临时文件的创建。