10GB以上TXT去重方法介绍

文本去重,网上有很多软件可以实现,但是实际上没有一个软件可以做到2GB以上完全去重,其根本原因在于:

(1)现在去重大多数采用哈希表,哈希表不重复元素暂存于内存中,所以随着数据增加,内存不断增加,一直到内存耗尽,实际上操作系统不会让我们这么一直在内存添加数据,而且是会有限制的

(2)32操作系统和64位操作系统去重支持最大数不一样,64位支持更多数据去重,但是不能用32位程序在64操作系统去重,这样就相当于32位去重。

(3)但是无论怎么做,如果数据量超大,即使是64位操作系统也是不行的,笔者曾经在64位操作系统对380M的txt手机号去重1秒多就完成任务,但是太大也是无法办到

操作系统的哈希表在32位操作系统长度最大是2千3百万,在64位操作系统是21亿,我们知道32位操作系统内存最大是4G,但是实际只有1.6G-1.8G可用(去重操作系统核心运行内存等),而64位操作系统不受内存限制,但是去重时候也会限制2GB以内

所以现在根本没有软件可以做到超大文本去重,受限于哈希表的长度和内存限制,根本无法做到软件达到一次去重,超大文本去重目前只可能是一种方法那就是将数据存入数据库用数据库去重。虽然我们不能做到一次性去重,但是我们还是可以通过其他方法去重,为此笔者想到一种分块去重思想,虽然不能把所有文本去重,但是可以分成块,一块一块去重,这样可以降低文件大小,不失为一种好方法,一旦把文件大小降下来我们就可以降低去重任务数和占用空间,分块去重好处就是对内存没有要求,对操作系统也没有要求。如果您想购买我们软件请关注微信公众号未来自主研究中心,今天介绍到此结束

感谢您的问题,我会尽力回答。 针对您提出的问题,这是一个比较复杂的任务,需要一些技巧和策略来实现。以下是一些可能有用的技巧和策略。 1. 把文件拆分成小块 由于内存只有2GB,无法一次性将10GB的文件读入内存中进行处理。为了解决这个问题,我们可以将文件拆分成多个小块,每个小块的大小适合内存。例如,可以将文件分为10个1GB的小块,每次读入一个小块进行处理,然后将结果存储到磁盘上,最后合并结果。 2. 使用哈希表进行去重 一种快速的去重方法是使用哈希表。我们可以将每个文件中的每一行都哈希,并将哈希值存储在哈希表中。如果两个文件的哈希值相同,则它们很可能是相同的行,需要进行去重处理。但是,由于哈希冲突的存在,有可能会有误判。为了尽量减少误判,可以使用一些去重算法,如MinHash算法、Bloom Filter等。 3. 排序后进行去重 如果文件已经排序,可以使用归并排序的思想将两个文件合并。具体而言,我们可以从两个文件中读取两行进行比较,如果相同则只保留一份,否则将较小的行保存到结果文件中。由于文件已经排序,我们只需要将当前行与下一行进行比较即可,无需将整个文件读入内存中。 综上所述,以上是一些可能有用的技巧和策略。当然,具体实现还需要根据实际情况进行调整和优化。希望能对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FL1623863129

你的打赏是我写文章最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值