gpt4 book ai didi

apache-storm - (Twitter) Storm 的聚合窗口

转载 作者:行者123 更新时间:2023-12-04 09:53:25 29 4
gpt4 key购买 nike

我在玩 Storm,我想知道 Storm 在哪里指定(如果可能)聚合时的(翻滚/滑动)窗口大小。例如。如果我们想在 Twitter 上找到前一小时的热门话题。我们如何指定一个 bolt 应该每小时返回结果?这是在每个 bolt 内以编程方式完成的吗?或者是某种方式来指定“窗口”?

最佳答案

免责声明:我写了一篇文章,引用了 gakhov in his answer above .

我想说最好的做法是使用所谓的 tick tuples in Storm 0.8+ .有了这些,您可以配置自己的 spouts/bolts 以在特定时间间隔(例如,每十秒或每分钟)收到通知。

这是一个简单的例子,它配置有问题的组件以每十秒接收一次滴答元组:

// in your spout/bolt
@Override
public Map<String, Object> getComponentConfiguration() {
Config conf = new Config();
int tickFrequencyInSeconds = 10;
conf.put(Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS, tickFrequencyInSeconds);
return conf;
}

然后,您可以在 spout/bolt 的 execute() 中使用条件开关。区分“正常”传入元组和特殊刻度元组的方法。例如:
// in your spout/bolt
@Override
public void execute(Tuple tuple) {
if (isTickTuple(tuple)) {
// now you can trigger e.g. a periodic activity
}
else {
// do something with the normal tuple
}
}

private static boolean isTickTuple(Tuple tuple) {
return tuple.getSourceComponent().equals(Constants.SYSTEM_COMPONENT_ID)
&& tuple.getSourceStreamId().equals(Constants.SYSTEM_TICK_STREAM_ID);
}

再次,我写了一个漂亮的 detailed blog post正如 gakhov 指出的那样,几天前在 Storm 中执行此操作(无耻的插件!)。

关于apache-storm - (Twitter) Storm 的聚合窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12603920/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com