perl – 如何有效地对两个级别的大文件进行排序?
发布时间:2020-12-15 21:43:28 所属栏目:大数据 来源:网络整理
导读:我有一个非常大的文件,超过100GB(数十亿行),我想在内存有限的unix系统上尽可能快地进行两级排序.这将是一个大型perl脚本中的一步,所以我想尽可能使用perl. 那么,我该怎么做呢?我的数据如下: A 129B 192A 388D 148D 911A 117 ……但数十亿行.我需要先按字母
我有一个非常大的文件,超过100GB(数十亿行),我想在内存有限的unix系统上尽可能快地进行两级排序.这将是一个大型perl脚本中的一步,所以我想尽可能使用perl.
那么,我该怎么做呢?我的数据如下: A 129 B 192 A 388 D 148 D 911 A 117 ……但数十亿行.我需要先按字母排序,然后按数字排序.是否更容易使用unix排序,比如…… sort -k1,2 myfile 或者我可以以某种方式在perl中完成所有这些操作吗?我的系统将有16GB内存,但文件大约100GB. 谢谢你的任何建议! 解决方法
UNIX排序实用程序可以通过在磁盘空间上创建临时工作文件来处理大型数据的排序(例如,大于工作的16GB RAM).
所以,我建议你按照你的建议简单地使用UNIX排序,调用-T tmp_dir选项,并确保tmp_dir有足够的磁盘空间来容纳将在那里创建的所有临时工作文件. 顺便说一句,这将在previous SO question.中讨论 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |