首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
给一个超过100G大小的log file, log中存着IP
[问答题]
给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?
与上题条件相同,如何找到top K的IP?如何直接用Linux系统命令实现?
添加笔记
求解答(10)
邀请回答
收藏(213)
分享
纠错
6个回答
添加回答
5
陈木木
Hash分桶法:
• 将100G文件分成1000份,将每个IP地址映射到相应文件中:file_id = hash(ip) % 1000
• 在每个文件中分别求出最高频的IP,再合并 Hash分桶法:
• 使用Hash分桶法把数据分发到不同文件
• 各个文件分别统计top K
• 最后Top K汇总
Linux命令,假设top 10:sort log_file | uniq -c | sort -nr k1,1 | head -10
发表于 2015-05-05 14:57:12
回复(2)
1
进击的软件攻城狮
sort log|uniq -c|sort -nr|awk '{print$2}'|head -K
发表于 2015-08-28 16:09:59
回复(0)
1
守候2581314
cat log file| awk '{print $1}' | sort | uniq -c | sort -nr | head -10
发表于 2015-05-18 13:45:39
回复(3)
0
Breaker
小根堆
发表于 2019-04-28 08:06:26
回复(0)
0
窥皓月
我说下思路可好,1.顺序遍历logfile中的IP地址并将IP插入法排序,与此同时给每个IP分配键值(值为IP出现次数),2.求出键值最大数并找到对应的IP
发表于 2015-07-30 10:11:42
回复(0)
0
╲_/蝸牜︶ㄣ
cat logfile | sort -r | uniq | awk NR==排行数
先使用sort -r进行次数由多到少的排序,再使用uniq去重,最后使用awk获取结果
发表于 2015-05-21 03:24:08
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
Linux
上传者:
陈木木
难度:
6条回答
213收藏
12920浏览
热门推荐
相关试题
关于Linux系统的负载(Load...
阿里巴巴
Linux
评论
(44)
无源晶振起振电容容量选择方法
元器件
评论
(1)
如果让你策划设计一个影片评论功能的...
竞品研究
评论
(1)
手写代码:循环链表插入元素
评论
(1)
计算二元分类的Jaccard指数
机器学习
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题