storm定时任务【tick】
- 继承BaseBasicBolt
- getComponentConfiguration方法设置发送ticktuple间隔时间(单位s)
- execute方法判断tuple类型,如果为ticktuple处理定时任务,如果不是处理其他任务。
//继承 BaseBasicBolt
public class CountTickBolt extends BaseBasicBolt {
private static final Logger logger = LoggerFactory.getLogger(CountTickBolt.class);
private Map<String, Integer> count;
private Long time; @Override
public Map<String, Object> getComponentConfiguration() {
//设置发送ticktuple的时间间隔
Config conf = new Config();
conf.put(conf.TOPOLOGY_TICK_TUPLE_FREQ_SECS, 5);
return conf;
} @Override
public void prepare(Map stormConf, TopologyContext context) {
super.prepare(stormConf, context);
count = new HashMap<String, Integer>();
time = System.currentTimeMillis();
} @Override
public void cleanup() {
super.cleanup();
} @Override
public void execute(Tuple input, BasicOutputCollector collector) {
//判断是否为tickTuple
if (input.getSourceComponent().equals(Constants.SYSTEM_COMPONENT_ID) &&
input.getSourceStreamId().equals(Constants.SYSTEM_TICK_STREAM_ID)){
//是,处理定时任务
Long nowTime = System.currentTimeMillis();
Long useTime = nowTime - time;
StringBuffer sb = new StringBuffer();
sb.append("======== Use Time :" + useTime + "========\r\n");
for (Map.Entry wordCount : count.entrySet()){
sb.append(wordCount.getKey() + "------>" + wordCount.getValue() + "\r\n");
}
Long nnTime = System.currentTimeMillis();
logger.info(sb.toString() + (nnTime - nowTime) );
time = nnTime;
}else {
//否,处理其他数据
String word = input.getString(0);
if (count.containsKey(word)){
int thisWordCont = count.get(word);
count.put(word, ++thisWordCont);
}else {
count.put(word,1);
}
}
} @Override
public void declareOutputFields(OutputFieldsDeclarer declarer) { }
- 如何设置此拓扑中所有的spout和bolt都定时处理。
- 由于是tuple类型数据,当正常tuple数据量过大时是否会造成tickTuple延时消费。
storm定时任务【tick】的更多相关文章
- Storm编程入门API系列之Storm的定时任务实现
概念,见博客 Storm概念学习系列之storm的定时任务 Storm的定时任务,分为两种实现方式,都是可以达到目的的. 我这里,分为StormTopologyTimer1.java 和 Sto ...
- Storm编程入门API系列之Storm的Topology的stream grouping
概念,见博客 Storm概念学习系列之stream grouping(流分组) Storm的stream grouping的Shuffle Grouping 它是随机分组,随机派发stream里面的t ...
- Storm编程入门API系列之Storm的可靠性的ACK消息确认机制
概念,见博客 Storm概念学习系列之storm的可靠性 什么业务场景需要storm可靠性的ACK确认机制? 答:想要保住数据不丢,或者保住数据总是被处理.即若没被处理的,得让我们知道. publi ...
- Spark Streaming笔记——技术点汇总
目录 目录 概况 原理 API DStream WordCount示例 Input DStream Transformation Operation Output Operation 缓存与持久化 C ...
- Spark学习笔记(三)-Spark Streaming
Spark Streaming支持实时数据流的可扩展(scalable).高吞吐(high-throughput).容错(fault-tolerant)的流处理(stream processing). ...
- Storm框架:如何实现crontab定时任务
Storm除了能对消息流进行处理,还能实现crontab定时任务. 只要在bolt中配置TOPOLOGY_TICK_TUPLE_FREQ_SECS项即可实现. @Override public Map ...
- 关于Storm tick
关于Storm tick 1. tick的功能 Apache Storm中内置了一种定时机制——tick,它能够让任何bolt的所有task每隔一段时间(精确到秒级,用户可以自定义)收到一个来自__s ...
- Storm中的定时任务
1.全局定时器 import java.util.Map; import backtype.storm.Config; import backtype.storm.Constants; import ...
- storm的定时任务
应用场景: 第一种方法 参考代码StormTopologyTimer1.java package yehua.storm; import java.util.Map; import org.apach ...
随机推荐
- 1001. Exponentiation高精度运算总结
解题思路 这道题属于高精度乘法运算,要求输入一个实数R一个指数N,求实数R的N次方,由于R有5个数位,而N又特别大,因此用C++自带的数据类型放不下. 解题思路是通过数组储存每次乘积结果和底数的每一位 ...
- JS&Jquery中的遍历
JavaScript中的遍历: 1.for 遍历 var anArray = ['one','two']; for(var n = 0; n < anArray.length; n++) { ...
- Oracle空间查询 ORA-28595
可使用数据库管理系统 (DBMS) 的结构化查询语言 (SQL).数据类型和表格式来处理地理数据库或安装了 ST_Geometry 类型的数据库中所存储的信息. 例如,在ArcMap中我们使用&quo ...
- bzoj1898 [Zjoi2005]沼泽鳄鱼
Description 潘塔纳尔沼泽地号称世界上最大的一块湿地,它地位于巴西中部马托格罗索州的南部地区.每当雨季来临,这里碧波荡漾.生机盎然,引来不少游客.为了让游玩更有情趣,人们在池塘的中央建设了几 ...
- 【算法系列学习】codeforces C. Mike and gcd problem
C. Mike and gcd problem http://www.cnblogs.com/BBBob/p/6746721.html #include<iostream> #includ ...
- 关于使用JavaScript实现图片点击切换(附带改变导航图片 方案二)
具体需求见方案一. 这种方案相比方案一更加专业. <!DOCTYPE html> <html> <head lang="en"> <met ...
- [转]亿级Web系统搭建:单机到分布式集群
当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...
- 用 Vue 全家桶二次开发 V2EX 社区
一.开发背景 为了全面的熟悉Vue+Vue-router+Vuex+axios技术栈,结合V2EX的开放API开发了这个简洁版的V2EX. 在线预览 (为了实现跨域,直接npm run dev部署的, ...
- KafKa+Zookeeper+Flume部署脚本
喜欢学习的朋友可以收藏 愿意了解框架技术或者源码的朋友直接加求求(企鹅):2042849237
- Document 对象
document.body //返回文档的body元素 document.cookies //返回当前文档有关的所有cookie document.createElement() //创建元素节点 d ...