Stream 使用Storm Spout元组在特定时间触发进一步计算的执行

Stream 使用Storm Spout元组在特定时间触发进一步计算的执行,stream,apache-storm,Stream,Apache Storm,我想把一些风暴螺栓连接到一个触发喷口,它会发出元组,比如说每3-4小时或者在一天的特定时间。当连接的螺栓从这个TriggerSpoot接收到一个元组时,应该启动对聚合数据(来自另一个kafka Spoot)的进一步计算。(在这种情况下,用于为后续MLBolt馈电的特征提取) 现在,我可以用nextTuple()方法制作一个喷口来公开这种行为吗? 这是要走的路吗?或者有人能提出更好的方法吗?这是一种集群的全球时钟 表示“感谢”您可以在螺栓上添加蜱虫,而不是使用触发喷口。将以下内容添加到螺栓实施中:

我想把一些风暴螺栓连接到一个触发喷口,它会发出元组,比如说每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可以公开销售吗?