背景:
一堆小文件,每个文件中有10^6行的数字,要求将这些小文件合并成一个有序的文件。
实现思路:
先将每个小文件整理成有序,可以用多进程来处理。
同时打开排完序的文件(打开的文件数受限于系统允许打开文件数,ulimit -a 查看,ulimit -n 修改可允许打开文件数),维护一个堆,堆中元素为{文件描述符,当前偏移量,当前行值},以当前行值比较。
背景:
一堆小文件,每个文件中有10^6行的数字,要求将这些小文件合并成一个有序的文件。
实现思路:
先将每个小文件整理成有序,可以用多进程来处理。
同时打开排完序的文件(打开的文件数受限于系统允许打开文件数,ulimit -a 查看,ulimit -n 修改可允许打开文件数),维护一个堆,堆中元素为{文件描述符,当前偏移量,当前行值},以当前行值比较。