参考:https://www.nowcoder.com/questionTerminal/cdd98d9efb2547b2bfab4ec96a63f22e

题目背景

给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url

主体思路

分治+hash

实现步骤

  1. 遍历文件A,对每个url使用hash(url) % 1000,根据所得的取值将url存储到1000个小文件中(a1,a2,…,a1000)(根据内存大小设定hash函数)
  2. 遍历文件B,使用同样的hash函数将B中的url存储到1000个小文件中(b1,b2,…,b1000)(这样相同的url就会被映射到下标相同的小文件中)
  3. 读取文件a1,简历hash表,再读取文件b1,遍历其中的url,若url在hash表中出现,说明为两文件共有,存入结果中。

【海量数据问题】两个超大文件求交集相关推荐

  1. Linux 两个文件求交集、并集、差集

    Linux 两个文件求交集.并集.差集 原文地址: Linux 两个文件求交集.并集.差集 (https://www.cnblogs.com/molong1208/p/5358509.html) 一. ...

  2. JAVA——两个List集合求交集、并集和差集(去重)模板

    关注微信公众号:CodingTechWork,一起学习进步. 引言   经常遇到一些集合类之间的过滤数据.求合集之类的问题,在此以List为例,毕竟在数据库中取数据后,我们使用比较多的是List集合进 ...

  3. python 对中文文件求交集、并集、差集

    核心内容: 1. set模块 intersection() ,union(), difference() 函数的使用 2. 文件格式:一行一词, uft-8 3. 解决中文以str读入后转成list ...

  4. python取得两个文件的交集、并集和差集。

    1.两个txt文件都是一列数据,现在求这两个txt文件的交集.并集和差集. s1 = set(open('/data/test/id.list', 'r').readlines()) s2 = set ...

  5. Linux中uniq去重以及对两个文件取交集,并集,差集

    uniq 前言 很多时候我们需要对数据去重,不管是少量数据还是大量数据,写代码进行去重终究没有使用系统功能直接操作文件方便,所以本文就介绍了一些关于uniq的使用方法 uniq单独使用 uniq配合s ...

  6. java 交集_Java大集合求交集的方法比较

    两个List集合求交集想必学过Java的都知道用系统自带的retainAll()方法,但是在数据量比较大时,这个方法效率并不高,利用空余时间研究了几种数据量较大时求两个集合交集的办法.本文主要研究了J ...

  7. 如何求两个文件的交集、并集和差集?------sort和uniq闪亮登场

    在日常开发中, 经常要对一些数据进行处理. 写个程序吧, 也可以实现, 但蛮麻烦的, 有些时候根本没有必要. 现在, a.txt和b.txt两个文件的数据都是逐行呈现的, 我们来说说如何求他们的交集. ...

  8. 求两个文件的交集、并集和差集 sort和uniq

    在日常开发中, 经常要对一些数据进行处理. 写个程序吧, 也可以实现, 但蛮麻烦的, 有些时候根本没有必要. 现在, a.txt和b.txt两个文件的数据都是逐行呈现的, 我们来说说如何求他们的交集. ...

  9. 利用shell求取两个文件的交集、差集、并集等

    求文件行数 cat a.txt | wc -l 交集 sort a.txt b.txt | uniq -d 并集 sort a.txt b.txt | uniq 差集 (1) a.txt-b.txt ...

最新文章

  1. Linux之make的用法讲解
  2. mysql忘记密码,如何重置密码
  3. vscode和anaconda结合的环境配置
  4. OpenKruise:阿里巴巴 双11 全链路应用的云原生部署基座
  5. 【十二省联考】春节十二响【贪心】【堆】【启发式合并】
  6. java日历类add方法_Java日历setMinimalDaysInFirstWeek()方法与示例
  7. 创建设计模式 - Builder设计模式
  8. iOS常用的存储方式介绍
  9. 精选|2019年1月R新包推荐
  10. android studio发包,androidstudio使用gradle打包配置详解.pdf
  11. java字符串不足后面补0,JAVA字符串格式化长度不足补0
  12. Qt/QML 遇到的小问题,一一记录,并尽量留下解决方法
  13. Windows Server2008 Server 安装Telnet服务
  14. java参数传递内存图解,探讨Java参数传递问题
  15. 消息队列之kafka在虚拟机安装使用与整合springboot详解教程
  16. 使用Python中的Button组件制作按钮
  17. GLSL vs HLSL vs Cg
  18. docker-error-at \\\“/dev/mqueue\\\“ caused \\\“no such device
  19. ssh2项目之自己想的购物网站
  20. Ubuntu 下谷歌浏览器、搜狗输入法的下载安装

热门文章

  1. 数据分析介绍及环境介绍
  2. C++ vector 相关函数简介
  3. 华为河图鸿蒙,继鸿蒙、麒麟后,华为又亮剑,新引擎河图曝光,抗衡谷歌又一招!...
  4. iOS11真机运行CoreML图像识别demo(Object C 版)
  5. C#学习 数据模块--DataTable类
  6. vivo Xplay(16GB) root教程_方法
  7. CSS磨砂玻璃穿透效果 filter: blur(4px);
  8. linux centos fedora rosegarden 播放 midi 音乐
  9. 关于iphone定位的基本知识
  10. 滤波器简介:FIR与IIR简介