海量数据处理-思路

来源:互联网 发布:md5算法基本过程 编辑:程序博客网 时间:2024/06/05 05:51

通过博客以及网上相关资料,对于海量数据处理相关问题进行总结,整理思路,以便不时之需。参考这里

  1. 海量日志数据,提取出某日访问百度次数最多的那个IP。
    hash%1000分在多个文件中(1000),对每个文件的IP进行hashmap操作,取出出现次数最大的ip,然后对着1000个ip进行比较,获取出现次数最多的ip。
  2. 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。
    假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。),请你统计最热门的10个查询串,要求使用的内存不能超过1G。
    hash,map,分成多个文件,若文件大小首先,继续分。。。。堆排序。
  3. 有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。
    hash%5000,每个文件保存词频最高的100个词,然后对5000个文件进行归并排序,获取前100个词。
  4. 有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序。
  5. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
  6. 在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数。
    采用2-bitmap
  7. 给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
  8. 怎么在海量数据中找出重复次数最多的一个?

    hash,分为小文件,找出每个小文件的次数最多的一个(hashmap),然后进行归并排序,找到最多的。

  9. 上千万或上亿数据(有重复),统计其中出现次数最多的前N个数据。

  10. 一个文本文件,大约有一万行,每行一个词,要求统计出其中最频繁出现的前10个词,请给出思想,给出时间复杂度分析。

方法总结

  1. Boom Filter

    适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集

  2. Hashing

    适用范围:快速查找,删除的基本数据结构,通常需要总数据量可以放入内存。

  3. bit-map,内存不够的问题

  4. 堆,topK问题
  5. 双层桶划分—-其实本质上就是【分而治之】的思想,重在分的技巧上!,hash划分,然后逐个击破,最后归并处理。
0 0
原创粉丝点击