10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

2012.3.19 微博热报:布隆过滤与多路归并

  • 2012-03-18
  • 本文字数:1071 字

    阅读完需:约 4 分钟

布隆过滤与多路归并

JavaChen 发布一条可作为面试题的微博

给你 A,B 两个文件,各存放 50 亿条 URL,每条 URL 占用 64 字节,内存限制是 4G,让你找出 A,B 文件共同的 URL。如果是三个乃至 n 个文件呢? http://t.cn/zOMmWru

李良普

bloom filter 可以实现,但是很少使用。

HubbleDotNet

布隆的关键是随机数的选取要尽可能接近平均分布

kkkua

BF 只是说有哪些 URL 在以前已出现过了。 优点难度的是真正“找出”n 个 URL 列表中所有那些相同的 URL(聚类问题)。好办法是做一个 incremental index, 边输入边去重,正如高性能的重复网页检测

海纳百通

我的理解是:1 布隆过滤 是能“激进地”找出“很可能已存在的”URL;2 但是,在发现可能的重复后,要确定并记录下 URL,就要索引到 URL,并做全文比对;3 这个问题里还连带提到“n 个文件”。。。所以,有改进的空间吧?

bnu_chenshuo

毛估了一下,单机(4G 内存,双硬盘)4 个小时应该能搞定,没用到 bloom filter。

陆鑫 Lucian

bloom filter 是我能想到速度最快的方法了,这题的关键就是先把要处理的数据总数降低数个量级,剩下的就好办了。陈硕老师能介绍下你的思路,效率如何吗?

matrix-reload

用 MapReduce 方法吧

bnu_chenshuo 回复 @陆鑫 Lucian

你估计用 bloom filter 解决,单机花多少小时?我的思路很简单,分块(1G)排序再多路归并,在归并的同时求集合的交集。

bnu_chenshuo 回复 @如此玄妙

多路归并用不着“最后一次归并 将 2 个一样大的已排序的文件合并”。AB 两个文件,分块排成各 300 个 1G 的文件,然后同时打开这一共 600 个文件读数据,两套文件分别多路归并,并求交集,把结果写出来即可。

原题不是要求单机 4G 内存吗?“300 个 1g 文件归并的比较次数 会和比 2 个 150g 文件大很多”是的,但是你那两个 150g 的文件事先要花多长时间生成?“每次取出数据,都需要在一个 300 条记录的树或者堆上进行一次排序”是的,不过这并不影响整体速度,内存处理速度只要高于磁盘读数据的速度即可

摇摆巴赫

bloom 需要磁盘随机 IO 吧,内存里的 hash bit 相等后还得磁盘读出来看 url 是不是相同,分块排序应该是顺序磁盘 IO,我觉得哪个快要看重复率

@TreapDB

先把这些 url 算 hash%100, 分别存到 100 个文件夹里,每个文件夹有两个文件,分别来自 A 和 B. 这两个小文件可以在内存中求交集生成小文件。最后,把这些交集小文件 cat 成一个文件。并不要求有序。

今日微博推荐

梁斌penny

推荐理由:清华大学计算机科学与技术系在读博士;《走进搜索引擎》作者、《深入搜索引擎》译者, THUIRDB 的 Coder,个人博客地址: http://blog.csdn.net/pennyliang

2012-03-18 20:492524
用户头像

发布了 479 篇内容, 共 176.3 次阅读, 收获喜欢 53 次。

关注

评论

发布
暂无评论
发现更多内容

动态IP代理是怎么实现的?

Geek_ccdd7f

超级App的前端框架也可以足够轻量

FN0

前端框架 超级app

动作活体检测能力支持自定义扫描动作,开发者接入更高效

HarmonyOS SDK

HMS Core

软件测试/测试开发丨探索Python中的函数定义和调用

测试人

软件测试

龙蜥社区联合浪潮信息发布《eBPF技术实践白皮书》(附下载链接)

OpenAnolis小助手

Linux 白皮书 ebpf 云栖大会 龙蜥社区

万字解析XML配置映射为BeanDefinition的源码

华为云开发者联盟

spring 开发 华为云 华为云开发者联盟

以程序员的身份,教您使用API接口获取虾皮商品详情

Noah

软件测试/测试开发丨​利用人工智能ChatGPT批量生成测试数据

测试人

软件测试

跨国企业在数据跨境传输中应该知道的五大要点

镭速

跨境数据传输 数据跨境传输

在跨境数据传输方面,如何应对跨国企业面临的挑战和风险

镭速

跨境数据传输

11月创作挑战赛开启!新奖品、新标准~

Openlab_cosmoplat

解决室内种植最大弊端的是方法—植物生长灯

电子信息发烧客

选购护眼台灯,全网都没有说清一个关键点!——照度均匀度

电子信息发烧客

中馥集团双11当日发货销售额突破1000万!

电子信息发烧客

华为音乐枫叶音乐会,倾耳聆听心动音乐故事

最新动态

一图看懂华为云CodeArts Link六大特性

华为云开发者联盟

开发工具 华为云 华为云开发者联盟 华为云CodeArts

用二维码展示产品,随时查看图文并茂的介绍

草料二维码

合约交易所开发

区块链技术

区块链开发:区块链软件开发包装相关解析

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

如何挑选代理IP

Geek_ccdd7f

守护 C 盘,Python 相关库设置

北桥苏

Python conda anconda

NLP技术如何为搜索引擎赋能

不在线第一只蜗牛

nlp NLP 大模型 技术 优化体系

数字马力面经和答案解析!社招岗

王磊

Java 面试 java面试

轻量级前端架构之:小程序技术

Speedoooo

小程序容器 小程序技术 小程序容器技术 微前端架构 轻量级前端架构

新一代信息技术成为数字化转型满意度评价新要素

极客天地

python爬虫代理的渠道有哪些

Geek_ccdd7f

2012.3.19微博热报:布隆过滤与多路归并_语言 & 开发_郑柯_InfoQ精选文章