2 lulinha lulinha 于 2014.12.11 18:32 提问

大众点评面试题:有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query....

有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序10个文件中的所有query。
http://www.manong1024.com/q/355

1个回答

lowanty
lowanty   2014.12.12 10:28
已采纳

先说解决方案。在不计内存消耗的情况下。构建一个全局Map,其中Key为query,value为计数器。然后开10个线程,分别读取文件,然后,操作Map,如果key已存在,value计算器加1,如果Key不存在,新增一个Entry,value记为1。。当然处理时主要多线程同步就行了。。。。当然也可以构建10个Map,都处理完后做Map合并。。。最后对Map进行排序就可以了。。。处理过程中,如果内存开销太大可以将Map改为数据库存储。就可以了。。。。。。当然如果有hadoop平台直接使用wordcount就更完美了。

Csdn user default icon
上传中...
上传图片
插入图片