海量数据处理问题

翻译 2018年04月17日 21:57:57

TOP N问题

  1. 如何在海量数据中找出重复最多一个。

    • 通过hash映射为小文件

    • 通过hash_map统计各个小文件重读最多的并记录次数

    • 对每个小文件重复最多的进行建立大根堆

  2. 上亿有重数据,统计最多前N个。

    • 内存存不下

    • 通过hash映射为小文件

    • 通过hash_map统计各个小文件重读最多的并记录次数

    • 对每个小文件重复最多的进行建立大根堆并重复N次取走堆顶并重建堆操作

    • 内存存得下

    • 直接内存通过hash_map统计并建大根堆

    • 重复N次取走堆顶并重建堆操作

  3. 海量日志数据,提取出某日访问百度次数最多的那个IP(同1)。

    • 将IP % 1000映射到1000个小文件中

    • 相同IP会被映射到同一个文件

    • 不会出现累加和更大情况

    • 分1000次在内存处理小文件,得到频率最大IP(使用map统计)

    • 对这1000个IP建立大根堆

  4. 1000w查询串统计最热门10个(同2)。

    • 同上
  5. 1G的文件,里面1行1个不超过16字节的词。内存限制1M,返回频数最高前100(同2)。

    • 将单词 % 5000存入5000小文件

    • 平均各文件约200K

    • 对超过1M的文件继续分割直到小于200K

    • 使用map统计各个词出现的频率

    • 对5000词使用堆排序或归并排序

分布式TOP N问题

  1. 分布在100台电脑的海量数据,统计前十。

    • 各数据只出现在一台机器中

    • 先在独立机器得到前十

      • 若可以放入内存直接堆排序

      • 若不可全放入内存:哈希分块 -> map统计 -> 归总堆排

    • 再将100台计算机的TOP10组合起来堆排序

    • 同一元素可同时出现在不同机器中

    • 遍历所有数据,重新hash取模,使同一个元素只出现在单独的一台电脑中,然后采用上面方法先统计每台电脑TOP10再汇总起来

快速外排序问题

  1. 有10个1G文件,每行都是一个可重复用户query,按query频度排序。

    • 顺序读取十个文件并采取哈希,将query写入10个文件中

    • 通过hash_map(query, count)统计每个query出现次数,至少2G内存

    • 通过得到的hash_map中query和query_count,对query_count排序并将重新输出到文件中,得到已排序好的文件

    • 对十个文件进行归并排序(外排序)

公共数据问题

  1. A,B两个文件各存放50亿url,每个为64Byte,限制内存4G找出公共url。

    • 对A和B两个大文件,先通过url % 1000将数据映射到1000个文件中,单个文件大小约320M(我们只需要检查对应小文件A1 V B1……,不对应小文件不会有相同url)

    • 通过hash_set统计,把A1的url存储到hash_set中,再遍历对应的B1小文件,检查是否在hash_set中,若存在则写入外存。重复循环处理对应的1000个对。

  2. 1000w有重字符串,对字符串去重。

    • 先hash分为多个文件

    • 逐个文件检查并插入set中

    • 多个set取交集

内存内TOP N问题

  1. 100w个数字找出最大100个。

    • 堆排序法

    • 建大根堆,取走堆顶并重建堆,重复100次

    • 快排法

    • 使用快速排序划分,若某次枢纽元在后10000时(具体情况具体分析),对后10000数据排序后取前100

位图法

  1. 在2.5亿数字中找出不重复的整数。

    • 使用2-Bit位图法,00表示不存在,01表示出现一次,10表示出现多次,11无意义。这样只需要1G内存。

    • 或者hash划分小文件,小文件使用hash_set检查各个元素,得到的。

  2. 如何在40亿数字中快速判断是否有某个数?

    • 位图法标记某个数字是否存在,check标记数组。

海量数据处理问题汇总及方法总结

  • 2010年12月24日 01:37
  • 113KB
  • 下载

秒杀99%海量数据处理问题 (总结与July 博客)

何谓海量数据处理? 数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。...
  • zailushang1708
  • zailushang1708
  • 2014-08-11 19:09:22
  • 510

海量数据的处理问题

笔者在实际工作中,有幸接触到海量的数据处理问题,对其进行处理是一项艰巨而复杂的任务。原因有以下几个方面:一、数据量过大,数据中什么情况都可能存在。如果说有10条数据,那么大不了每条去逐一检查,人为处理...
  • smileberry1
  • smileberry1
  • 2011-07-12 17:05:30
  • 497

海量数据处理问题。。。

蓄水池抽样算法在不知道文件总行数的情况下,如何从文件中随机的抽取一行?给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素。你只能遍历这个链表一次。你的算法必须...
  • qq_26437925
  • qq_26437925
  • 2016-09-16 19:45:52
  • 203

面试必须掌握的十个海量数据问题及解决方案

原文链接:BAT直通车-海量数据专题更多精彩内容(BAT招聘、笔试、面试、技术),请访问BAT直通车题目问题一:现有海量日志数据,要提取出某日访问百度次数最多的那个IP(可以将题干简化,假设日志中仅包...
  • hitxueliang
  • hitxueliang
  • 2016-08-08 16:57:22
  • 2890

常见海量数据处理问题

1,给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1: 可以估计每个文件安的大小为50G×64=320G,远远大于内存限制...
  • facome
  • facome
  • 2014-07-10 14:51:14
  • 328

海量数据处理问题之面试题

1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的...
  • felinewong
  • felinewong
  • 2017-02-27 21:15:15
  • 51

海量数据处理问题之Bit-Map详解

什么是Bit-map     所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。   ...
  • felinewong
  • felinewong
  • 2017-02-27 21:10:10
  • 90

Top k - 海量数据处理问题

所谓的top k 问题,海量数据找最大的或者最小的前K个数据。 最大的这种问题处理方式: 先进行哈希分割,再将这些数据前K个元素建立一个最小堆,如果之后的元素比堆顶大的话,将堆顶元素替换为该元素,这样...
  • sdoyuxuan
  • sdoyuxuan
  • 2017-06-15 23:09:25
  • 95

海量数据处理问题学习笔记

海量数据处理问题的常见场景有两种:(1)给定一定大小的数据(文件),数据(文件)大小大于内存容量,无法全部同时转载进内存中,然后需要对其进行处理,比如找重复项,或者找TOP k项;(2)给出非常大的待...
  • zhoubao1992
  • zhoubao1992
  • 2013-07-28 13:38:43
  • 836
收藏助手
不良信息举报
您举报文章:海量数据处理问题
举报原因:
原因补充:

(最多只允许输入30个字)