海量数据处理问题
海量数据处理问题 海量数据处理问题的解题关键 分而治之,通过hash函数将大任务分流到机器,或分流为小文件 常用hashMap或bitmap 1.海量日志数据,提取出某日访问百度次数最多的那个IP. 访问百度的日志中取出IP,逐个写入一个大文件中,采用映射的方法,比如说模1000,将大文件映射成1000个小文件,再找出每个小文件中出现频率最大的IP,以及相应的频率(构建IP为key,出现频率为value的Hash Map)。然后在这1000个最大的IP,然后找出频率最大的IP(通过内排序算法)。 2.搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255个字节,假设目前有1000W个记录(其中有大量的重复,去重后大约还剩300W个, 一个查询的重复度越高,该记录越热门),请统计当前最热门的10个查询串,要求使用内存不能超过1G. Top K算法: 1.对这些海量数据进行批处理,在O(n)的时间内使用hash表完成统计()。 2.借助于堆,找出Top K,时间复杂度为N LogK (此时N为300W)。 3.有一个1G大小的文件,里面的每一行是一个词,词的大小不超过16个字节,内存限制大小事1M,返回频度最高的100个词。 顺序读取文件,对于每个词x,取hash(x)%5000存到500个小文件当中,每个小文件大概是200K左右