50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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:492594
用户头像

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

关注

评论

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

🎨 HTTP 协议的前世今生

飞天小牛肉

Java 程序员 面试 计算机网络 2月春节不断更

商务部CECBC专委会-商务联络部长王聚师:中医国际化的数字创新密码

CECBC

数字

架构师week11 作业

Geek_xq

重磅发布 | 3.4K Star可视化神器来啦

百度开发者中心

工具 可视化 #飞桨#

anyRTC新春大礼包

anyRTC开发者

音视频 WebRTC RTC

JDK1.8升级这么久!Stream流的规约操作有哪些?

李尚智

Java 架构 jdk 函数编程

通过配置开关 Spring Boot 中的 @Scheduled 定时任务

和白白

Java 定时任务 springboot

开发Kafka消费者客户端需要注意哪些事项?

李尚智

SDS离全面EC(纠删码)还有多远?

XSKY星辰天合

存储

Spring Boot 微服务性能下降九成!使用 Arthas 定位根因

Java架构师迁哥

做了6年的Android,Jetpack-MVVM-高频提问和解答,看看这篇文章吧!

欢喜学安卓

android 程序员 面试 移动开发

Clubhouse是个啥?一夜爆火一码难求

架构精进之路

七日更 2月春节不断更 clubhouse

为什么联盟链系统没有“激励”?

CECBC

区块链

LoraWan的第一个网关与设备

远鹏

物联网 IoT ChirpStack LoraWan

5分钟让你理解K8S必备架构概念,以及网络模型(上)

大数据 架构

重磅发布 | 2021年OpenAtom XuperChain开源技术路径

百度开发者中心

百度 #区块链#

Kafka消费者提交消费位移时提交的是当前消费到的最新消息的 offset 还是 offset+1?

李尚智

Java kafka 程序员 架构 消息中间件

架构师week11总结

Geek_xq

怎么理解Kafka消费者与消费组之间的关系?

李尚智

Java 大数据 程序员 架构

Kafka在哪些场景下会造成重复消费或消息丢失?

李尚智

Java kafka 程序员 架构 消息中间件

Kafka生产者哪些重要的参数是我们需要注意的?

李尚智

Java kafka 程序员 架构 消息中间件

“双循环”下的数字货币棋局

CECBC

数字货币

【得物技术】AB实验设计实现与分流算法

得物技术

算法 AB AB testing实战 实现 得物技术

安卓开发在线!Android面试吃透这一篇就没有拿不到的offer!大厂内部资料

欢喜学安卓

android 程序员 面试 移动开发

【百度技术分享】San介绍以及在百度APP的实践

百度Geek说

Java JavaScript feed

百度亮相全球量子信息处理顶会QIP2021 推动全球量子科技进步

爱极客侠

第十一周作业&总结

胡益

函数式编程Stream接口真的有那么好用吗?

李尚智

Java 程序员 架构

LeetCode题解:529. 扫雷游戏,BFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

即构发布 LCEP 产品「RoomKit」 ,实现房间内0代码接入

ZEGO即构

用 JSX 实现 Carousel 轮播组件

三钻

大前端 组件化 JSX

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