大数据处理面试题

针对求多个数据中出现最多的Top(K)

数据重复率高

首先看看数据重复率,若重复率很高,可以直接在内存中将数据存进HashMap,然后利用最大堆求出出现次数最多的K个数据。

数据重复率低

化大为小,hash分割文件

将大文件用hash划分为多个小文件,如果小文件还超出了所需内存怎么办?没事,再对其进行hash,将其分为更多的小文件。如果多次hash文件大小仍然超出内存,就不用管它了,因为这说明那个文件内的数组重复率非常高。

分而治之,hash统计频率

分别对每个小文件用hashtable统计数据频率。

合并结果,堆排序

用最大堆对其排序。


针对大量数据排序

化大为小

将大文件直接分割为多个小文件。

分而治之

分别对小文件进行内排序。

合并结果

采用败者树进行多路合并。
若是对频率排序,还是得先用hash分割,再统计频率,视统计结果确定对其直接排序或者外排序。


找出两个大文件中相同的数据

化大为小

用相同的hash函数分别对这两个文件进行hash。编号为a1,a2,a3……和b1,b2,b3……

分而治之

分别对对应的小文件进行hash查找。


大量数据查重,过滤

bitmap

一个文件中查找在另一个文件中没有出现过的数:
在数据位数较小,如32位整型情况下,可以采用bitmap,将整型所有数映射为bitmap上对应的位。
一个文件中查找没有重复的数:
使用2bitmap,00代表没有出现过,01代表出现过一次,10代表重复多次。

布隆过滤器

数据位数较大,bitmap无法存储,采用布隆过滤器。利用多个hash函数映射到多个bitmap上。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值