假设我们有一些文件,例如名为“A.txt”。我们知道有are一些重复的元素。 “A.txt”是very大,比内存大十倍以上,大概50GB左右。有时,B 的大小大约等于 A 的大小,有时则为many比 A 的尺寸小几倍。
让它具有这样的结构:
a 1
b 2
c 445
a 1
我们需要获取文件“B.txt”,该文件不会有此类重复项。举个例子,应该是这样的:
a 1
b 2
c 445
我想到了复制A并执行B的算法,然后取出B中的第一个字符串,并互相查找,如果找到相同的,则删除重复项。然后取第二根弦,依此类推。
但我认为是way太慢了。我可以用什么?
A is not数据库!请不要使用 SQL。
抱歉,没说,排序就可以了。
虽然可以排序,但是如果不能排序怎么办?
一种解决方案是对文件进行排序,然后一次将一行复制到新文件中,过滤掉连续的重复项。
那么问题就变成了:如何对太大而无法放入内存的文件进行排序?
Here's Unix 排序是如何进行的 http://vkundeti.blogspot.com/2008/03/tech-algorithmic-details-of-unix-sort.html.
也可以看看这个问题 https://stackoverflow.com/q/930044/21727.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)