Stream 使用Storm Spout元组在特定时间触发进一步计算的执行
我想把一些风暴螺栓连接到一个触发喷口,它会发出元组,比如说每3-4小时或者在一天的特定时间。当连接的螺栓从这个TriggerSpoot接收到一个元组时,应该启动对聚合数据(来自另一个kafka Spoot)的进一步计算。(在这种情况下,用于为后续MLBolt馈电的特征提取) 现在,我可以用nextTuple()方法制作一个喷口来公开这种行为吗? 这是要走的路吗?或者有人能提出更好的方法吗?这是一种集群的全球时钟Stream 使用Storm Spout元组在特定时间触发进一步计算的执行,stream,apache-storm,Stream,Apache Storm,我想把一些风暴螺栓连接到一个触发喷口,它会发出元组,比如说每3-4小时或者在一天的特定时间。当连接的螺栓从这个TriggerSpoot接收到一个元组时,应该启动对聚合数据(来自另一个kafka Spoot)的进一步计算。(在这种情况下,用于为后续MLBolt馈电的特征提取) 现在,我可以用nextTuple()方法制作一个喷口来公开这种行为吗? 这是要走的路吗?或者有人能提出更好的方法吗?这是一种集群的全球时钟 表示“感谢”您可以在螺栓上添加蜱虫,而不是使用触发喷口。将以下内容添加到螺栓实施中:
表示“感谢”您可以在螺栓上添加蜱虫,而不是使用触发喷口。将以下内容添加到螺栓实施中:
import backtype.storm.Constants;
@Override
public Map<String, Object> getComponentConfiguration() {
Config conf = new Config();
conf.put(Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS, 15);
return conf;
}
public static boolean isTickTuple(Tuple tuple) {
String sourceComponent = tuple.getSourceComponent();
String sourceStreamId = tuple.getSourceStreamId();
return sourceComponent.equals(Constants.SYSTEM_COMPONENT_ID)
&& sourceStreamId.equals(Constants.SYSTEM_TICK_STREAM_ID);
}
导入backtype.storm.Constants;
@凌驾
公共映射getComponentConfiguration(){
Config conf=new Config();
conf.put(Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS,15);
返回形态;
}
公共静态布尔StickTuple(Tuple-Tuple){
字符串sourceComponent=tuple.getSourceComponent();
字符串sourceStreamId=tuple.getSourceStreamId();
返回sourceComponent.equals(常数.SYSTEM\u COMPONENT\u ID)
&&sourceStreamId.equals(常数.SYSTEM\u TICK\u STREAM\u ID);
}
在execute()方法中,首先检查输入是否是tick tuple,然后继续执行逻辑。谢谢,当我得到这个答案时,我已经按照预期实现了TriggerSpout。使用这种方法可以设置一天中某些时间的动作发生时间,而使用勾选元组时,只能使用固定频率。@t-h-您是如何使TriggerSpout在一天中的特定时间(每天下午5点相同)发出元组的?这台TriggerSpoot可以公开销售吗?