虽然从发明到现在仅50年,电脑已经在所有商业和领域中成了不可或缺的一部分,近几年来,随着计算机的普及,海量数据处理的技术也越来越优秀。海量数据处理典型应用于大数据平台在保护我们的数据安全时,可以起到至关重要的重要。
海量数据处理的两个文件,各存放50亿条URL,每个URL占64字节。内存限制是4G,找出两个文件中相同的URL,这个问题有一个内存限制,那么肯定需要分治法。
方法一50亿个64Byte= 5G*64Byte = 320G,内存4个G,肯定是不可以的,那么咱们将每个URL进行hash,然后放到1024个文件中,也就是每个文件为320G/1024=320M左右。海量数据处理以hash值作为文件名,第一个文件hash出来的文件命名为(hash[URL]%1024)a1.....a1024,第二个文件hash出来的文件命名为b1.....b1024。1024个文件生成了,那么相同的URL肯定在hash命名文件的后缀中,比如a1 vs b1,海量数据处理这样依次读取文件的内容放入到hashset中。如果存在的话记录并且追加放到文件中。最后文件中就是所有URL即为相同的URL。
方法二(Bloom Filter布隆过滤器),先说一下布隆过滤器。主要将需要内容进行hash,然后对应到相应的bit上,即Bit Map位图法,海量数据处理但是这个里边有一个问题就是hash会碰撞,即不同的结果可能会hash成相同的值,这样就会出错,如果可以接受错误率,当然错误率较低,那么可以采用这种方式。4G内存=2^32 * 8 约等于 40亿Byte * 8 大约等于340亿。先遍历第一个文件,然后再遍历第二个,这样会错误率。海量数据处理读取每个小文件,并且将读取的关键字形成Trie树字典树,这样会达到去重的效果。Trie树的插入和查询复杂度是O(k), k为最长字符串的长度,然后建立长度为1000的小根堆,海量数据处理将遍历每个关键字的出现的次数放到小根堆里,如果采用位图法的话需要为10^7 / 8 /1024/1024 大约等于1.19M,大于题目的1M,显然位图法不太合适,那么咱们考虑一下多路归并排序。
众所周知,我们生活在一个动态的世界里,面临很多困难。我们只能面对他们,所迈出的第一步路是关键,海量数据处理技术这个产品可根据自己的需求,更好的对自己的信息进行一个分析与处理运用。在现在这个科技发达的时代,我们想要和时光赛跑,就更要学会去更好的利用科技,就更要学会利用这个世界级的业务压力的产品,那就是海量数据处理技术。
更多产品了解
欢迎扫码加入云巴巴企业数字化交流服务群
产品交流、问题咨询、专业测评
都在这里!
2022-11-21 14:50:01
2022-11-21 14:54:32
2022-11-21 14:52:45
2022-11-21 14:54:48
2020-03-12 17:28:43
2022-11-21 14:50:09
甄选10000+数字化产品 为您免费使用
申请试用
评论列表