【问题标题】:Fastest way to remove duplicate lines in very large .txt files删除非常大的 .text 文件中重复行的最快方法
【发布时间】:2011-04-14 16:44:10
【问题描述】:

从 1 GB 及以上的大型 .txt 文件中删除重复行的最佳方法是什么?

因为删除一个接一个的重复项很简单,我们可以将这个问题转为对文件进行排序。

假设,我们无法将整个数据加载到 RAM 中,因为它的大小。

我只是在等待从具有唯一索引字段的 SQL 表中检索所有记录(我之前将文件行加载到表中)并且想知道是否存在加速它的方法。

【问题讨论】:

  • 在什么硬件上?使用任何特定语言?
  • 任何种类的语言、工具、操作系统,只是想法。我使用 mysql 因为它的索引和(可能)快速的树搜索算法,所以它确实对我有用,但我想知道有更快的解决方案。
  • 如果它已经在 mysql 中,你不能直接SELECT DISTINCT 吗?这会是一次性的重复过程吗?
  • select distinct 会将查询结果加载到 RAM。查询的执行时间也会很糟糕(如果它完全可以处理这么多的数据)。

标签: sorting file duplicates


【解决方案1】:

你可以试试bloom filter。虽然您可能会得到一些误报(尽管您可以以更多处理为代价任意接近 0%),但它应该非常快,因为您不需要比较甚至不需要对每一行进行 log(n) 搜索看。

【讨论】:

  • 使用布隆过滤器或其他散列函数,您可以找到可能的重复项,然后进行比较和删除。
猜你喜欢
  • 2017-05-06
  • 2010-10-17
  • 1970-01-01
  • 2011-01-20
  • 1970-01-01
  • 2012-12-20
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
相关资源
最近更新 更多