对大于可用内存(许多 10 千兆字节)并包含可变长度记录的文本文件进行排序的好算法是什么?我见过的所有算法都假设 1) 数据适合内存,或者 2) 记录是固定长度的。但想象一个我想按“出生日期”字段(第 4 个字段)排序的大 CSV 文件:
Id,UserId,Name,BirthDate
1,psmith,"Peter Smith","1984/01/01"
2,dmehta,"Divya Mehta","1985/11/23"
3,scohen,"Saul Cohen","1984/08/19"
...
99999999,swright,"Shaun Wright","1986/04/12"
100000000,amarkov,"Anya Markov","1984/10/31"
我知道:
- 这将在一台机器上运行(非分布式)。
- 我要运行它的机器将有几个处理器。
- 我要排序的文件可能比机器的物理内存大。
- 文件包含可变长度的行。每行将包含固定数量的列(分隔符分隔的值)。文件将按特定字段(即文件中的第 4 个字段)排序。
- 一个理想的解决方案可能是“使用这个现有的排序实用程序”,但我正在寻找最好的算法。
- 我不希望得到一个完全编码的、有效的答案。更多类似于“检查一下,这是它的工作原理,或者这就是它对这个问题有效的原因”。我只是不知道在哪里看...
- 这不是家庭作业!
谢谢!♥</p>