首页
题库
面试
求职
学习
竞赛
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收藏
12866浏览
热门推荐
相关试题
关于Linux系统的负载(Load...
阿里巴巴
Linux
评论
(45)
编程题 ,按照要求创建Java 应...
Java
评论
(1)
计算机系统中用于管理硬件和软件资源...
编程基础
评论
(1)
市场与销售的区别在哪里?
市场营销
评论
(1)
说出3个获取用户需求的方法并简述其...
用户研究
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题