我有一个巨大的制表符分隔文件,其中包含多达 2 亿行(通常约为 2000 万)和两列:第一列包含一个最多 40 个字符的 ASCII 字,第二列包含一个整数。
我想做以下步骤:
- 按第一列排序
- 删除重复行以使所有行唯一
- 读出第一列中给定条目的所有行
我有 3 GB 的内存限制(因此将所有数据读入散列将不起作用),无限的硬盘空间并希望在单核上运行脚本。我打算并行运行几个脚本,所以对硬盘的读写操作不应该太高。
考虑到文件的大小,应该如何继续执行我的脚本(在 Perl 中)?
考虑到文件的大小,您建议第一步使用哪种算法?
第 3 步是我认为最复杂的部分。我该如何处理?我不熟悉索引算法。你能推荐一个最适合这个问题的吗?有没有我可以使用的 Perl 模块?
首先将文件转换为二进制文件是否有意义(例如将 SAM 转换为 BAM)?如果是,您是否有任何转换和处理此类文件的说明或算法?