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)。