文件中存储10亿个用户姓名,如何快速找到出现频率最高的前100名?

架构师卖油翁 2015-01-29 09:33:51
文件中存储10亿个用户姓名,如何快速找到出现频率最高的前100名?

...全文
1371 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Evankaka 2015-02-17
  • 打赏
  • 举报
回复
好熟悉的面试题目。。。
tchqiq 2015-02-16
  • 打赏
  • 举报
回复
十亿,估计awk不行了~两个mapreduce就可以。你们要是有hive那就一句sql的事情:

select name,count(1) as num from t1
group by name
order by num desc
limit 100
不过你可以试试awk:

awk ‘{a[$1]++} END {for (i in a) print i,a[i]}' file | sort -rn 2 |  head 100
yanghaishui351988 2015-02-15
  • 打赏
  • 举报
回复
典型的TOP N问题,思路就是分而治之,将文件split多个块,每个块取TOP N,或者最简单的就是先拿100 个出来,以后每次拿出来相比较呗
江南浙里 2015-02-07
  • 打赏
  • 举报
回复
2楼正解,可以参考
  • 打赏
  • 举报
回复
可以写2个MapReduce,第一个MapReduce统计每个姓名出现的频率,第二个MapReduce利用Shuffle Sort 将姓名和出现频率当作KEYr然后取Top N
Daly罗 2015-01-30
  • 打赏
  • 举报
回复
Hadoop 自带示例WordCount可以计算出单词出现的次数,分析这个文件即可。

20,848

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧