1亿条日志取出现频率最高的前10个ip,有什么比较好的方…

1亿条日志取出现频率最高的前10个ip,有什么比较好的方案,查了一下感觉都不是特别好的方案

吴用:m

程序猿.嵩山弟子:先hash分成很多小文件然后再hashmap然后再排序?

家里蹲科技有限公司员工:sort,uniq,sort,head?

尼古拉斯赵四:m

每日优鲜员工:Map reduce?

IBM中国有限公司员工:常见的思路,分治+trie树+小顶堆

南哥6:hive

程序猿.狄云:1个ip 15Byte,转成int就4byte,一亿个就400m,读到内存里算就行吧,硬算几分钟就能出结果…

欢聚时代员工:一亿条日志又不是一亿个IP。

程序猿.楚中天:先分片并行读日志,只保留IP且统计本分片的ip-count,然后汇总到一个节点上算总量,肯定爆不了内存

假意或真心:先ip hash 模10 分到10个文件里,每个文件用最小堆统计top 10 ,再把10个top 10排序取top 10

百度员工:直接入es,毫秒级出答案

楼主:不应该是大顶堆吗

奇虎360员工:spark wordcount

前去哪儿员工:Ip总的条数有多少,是不是直接用个大map存就好了,不懂为什么要分治。这个题目出的有问题吧。

前去哪儿员工:一亿条日志又不需要放内存里

新浪微博员工:先hash的那个同学可以的,先hash然后分文件,然后topk问题

青十七:大根堆

程序猿.狄云:按行扫文件,把ip留内存里

小米员工:首先ip做key,次数做value,然后对这个ip模成10组数据,做10路归并,就是10个大根堆,比较器按照value去比较,10路堆,堆顶最大的弹出然后堆更新,再去比较10路堆顶,直到弹出10个

程序猿.丨今晚打老虎丨:拿spark做也是分分钟的事

我是来找女朋友的:我也这样说,他们说我不对,还要打我,这在大数据里最简单的了

秃笔翁:用堆,on复杂度

五八信息技术有限公司员工:百度最喜欢的一道面试题

上上签呀:hive一条sql搞定,so easy

前北京奇虎360科技有限公司员工:其实就是mapreduce,hash分桶,然后堆计算,最后时间复杂度是nlogk近似为O(n)。

程序猿.我要修福报:先问条件,cpu,内存。不同的条件用不同的方法。不同的条件适用不同的方法

百度员工[2]:是面试还是实际工作?实际工作用doris,解决所以此类大数据问题。

程序猿.桃花仙:m

程序猿.宋兵乙二锅头:m

假意或真心:先ip hash 模10 分到10个文件里,每个文件用最小堆统计top 10 ,再把10个top 10排序取top 10

程序猿.狄云:1个ip 15Byte,转成int就4byte,一亿个就400m,读到内存里算就行吧,硬算几分钟就能出结果…

家里蹲科技有限公司员工:sort,uniq,sort,head?

前北京奇虎360科技有限公司员工:其实就是mapreduce,hash分桶,然后堆计算,最后时间复杂度是nlogk近似为O(n)。