首页
题库
面试
求职
学习
竞赛
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收藏
12994浏览
热门推荐
相关试题
关于Linux系统的负载(Load...
阿里巴巴
Linux
评论
(45)
取数游戏
dfs
评论
(1)
来自
华为机试编程模拟题1
在前端开发中,以下关于 HTTPS...
网络基础
评论
(1)
假设您使用一台专业级存储设备,若磁...
操作系统
评论
(1)
请问以下JS代码输出的结果是什么?...
Javascript
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题