Algorithm 如何对大文件进行排序(不适合RAM)
假设有一个算法X需要两个步骤才能最终输出到文件Algorithm 如何对大文件进行排序(不适合RAM),algorithm,sorting,bigdata,Algorithm,Sorting,Bigdata,假设有一个算法X需要两个步骤才能最终输出到文件 收集数据 排序数据 我们还可以说,收集的数据太大,无法保存在RAM中,并且在步骤2采取行动之前已写入文件 例如,以包含数字的500GB文件作为步骤1的输出。每行一个数字。步骤2必须按升序对行进行排序 步骤2如何在不读取整个输入文件的情况下有效地对数字进行排序 最有效的方法是将交换空间增加500 GB并进行一次排序,让操作系统内存管理器处理缓存 另一种方法是将数据分割成合适的片段,例如250个2GB文件。对每一个文件进行排序,然后对结果进行合并排序。
步骤2如何在不读取整个输入文件的情况下有效地对数字进行排序 最有效的方法是将交换空间增加500 GB并进行一次排序,让操作系统内存管理器处理缓存 另一种方法是将数据分割成合适的片段,例如250个2GB文件。对每一个文件进行排序,然后对结果进行合并排序。“GNU CoreUtils”作为源代码提供,或内置到Linux发行版,可用于Windows预编译,包含GNU拆分和GNU排序例程 如果可以对数据进行排列,使每个要排序的记录都位于单独的行上,则“拆分”功能将一个大文件拆分为多个小文件。每个较小的文件都可以使用Gnu排序功能在内存中单独排序,最后,所有已排序的较小文件都可以使用Gnu排序的另一个选项合并排序回一个大文件 见:
- 拆分:
- 排序: