分享

请教大神 storm如何实现top n 统计?

Hentai 发表于 2016-12-9 10:16:54 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 11212
我想统计在每分钟内,出现次数最多的10个ip

已有(5)人评论

跳转到指定楼层
langke93 发表于 2016-12-9 16:59:32
这个用到storm的时间窗口
回复

使用道具 举报

Hentai 发表于 2016-12-9 17:00:07
langke93 发表于 2016-12-9 16:59
这个用到storm的时间窗口

怎么实现呢
回复

使用道具 举报

xuanxufeng 发表于 2016-12-9 18:03:56

这个需要一定的编程基础,关于逻辑实现可参考这个
从业务逻辑讲解Storm的滑动窗口
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20519


回复

使用道具 举报

Tank_2000 发表于 2016-12-11 21:52:57
本帖最后由 Tank_2000 于 2016-12-11 22:10 编辑

[mw_shl_code=java,true]topology.newDRPCStream("top", drpc) .each(new Fields("args"), new Split(“ ”), new Fields("time")) .parallelismHint(5) .stateQuery(myStates,new Fields("time"),new QueryPacketDB(),new Fields("srcip", "byt", "pkt")) .groupBy(new Fields("srcip")) .chainedAgg() .aggregate(new Fields("byt"), new count(), new Fields("yt")) .aggregate(new Fields("pkt"), new count(), new Fields("kt")) .chainEnd() .applyAssembly(new FirstN(10, "yt", true));
[/mw_shl_code]

使用ITridentSpout, 将上面的分组代码,稍微调整按时间分 分组试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条