【面试题】海量数据处理常见方法总结

  1.  Hash法:哈希表。用于快速存取、统计某些数据,将大量数据进行分类。例如提取某日访问网站次数最多的IP地址等。 
    
  2. Bit-map:使用位数组来表示某些元素是否存在。用于海量数据的快速查找、判重、删除等。如从8位电话号码中查找重复号码或统计不同号码的个数(可用多个bit表示一个数)。
    
  3.  Bloom     Filter:位数组+k个hash函数。定义m位初始化都为0的数组,每个函数都可以将元素映射到某一位。判断某个元素是否属于集合时,查看k个位是否全部为1。缺点:若都为1存在错误率、无法删除元素。如检查英文单词是否拼写正确、邮箱过滤垃圾邮件、找出两个各存放50亿条URL的文件中共同的URL。
    
  4. 数据库优化法:创建索引、配置缓存、切表分表、数据采样。        倒排索引法:正向索引用来存储每个文档的单词的列表,反向索引则是单词指向了包含它的文档。如常见的学术论文的关键词搜索。    
    
  5. 外排序法:内存不能一次处理待排序的对象,必须把它以文件的形式存放于外存,排序时(归并排序)再把他们一部分一部分地调入内存进行处理。用于大文件的排序以及去重。
    
  6. Trie树:前缀树。根节点不包含字符,除根节点外的每一个子节点都包含一个字符。从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。每个节点包含构成单词数量count。用于词频统计、前缀匹配、字符串排序。
    
  7. 堆:二叉堆。适用于海量数据求前N大(小顶堆)、前N小(大顶堆)或中位数(双堆)问题。如100w个数中找最大的前100个数。     
    
  8. 双层桶:分而治之。因为元素范围很大,不能利用直接寻址表,所以通过多次划分,逐步确定范围,然后最后在一个可以接受的范围内进行。如5亿个整数中找出不重复的整数的个数(内存装不下)。将数据分离到不同的区域文件,不同的区域在利用bitmap来解决。
    
  9. MapReduce法:将数据划分并交给不同的机器去处理,结果归约。
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值