首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发射到Storm Trident中的多个流

发射到Storm Trident中的多个流
EN

Stack Overflow用户
提问于 2015-11-21 07:22:12
回答 1查看 627关注 0票数 1

我怎样才能发射到多个流从同一螺栓在风暴三叉树?

我有一个螺栓,它做了一些计算,并根据结果,我想要传递一些值给一个流,另一些值给另一个流。

在Storm (不是三叉树)中,我们可以通过以下方式来实现:

将流拆分为多个流:

代码语言:javascript
复制
@Override
public void declareOutputFields(final OutputFieldsDeclarer outputFieldsDeclarer) {
    outputFieldsDeclarer.declareStream("type1-stream", new Fields("type1"));
    outputFieldsDeclarer.declareStream("type2-stream", new Fields("type2"));
    outputFieldsDeclarer.declareStream("error-stream", new Fields("error"));
}

然后根据调查结果进行发射,例如:

代码语言:javascript
复制
collector.emit("type1-stream", new Values("type 1 data"));
collector.emit("type2-stream", new Values("type 2 data"));
collector.emit("error-stream", new Values("error data"));

然后,通过侦听预期的流来完成其余的工作:

代码语言:javascript
复制
builder.setBolt("errorBolt", errorBolt).shuffleGrouping("errorBoltStream", "error-stream");
builder.setBolt("type1Bolt", type1Bolt).shuffleGrouping("type1BoltStream", "type1-stream");

那么,我如何使用Storm Trident实现相同的行为呢?

一个选项是为同一个流调用"each“,并运行相同的螺栓,只根据我想要发送到该流的内容进行发送;另一个选项是发送键和值对,并根据键(如type1、type2、error等)对流进行过滤。并再次创建多个流。但在我看来,它们都不是一个好的设计。实现这一目标的最佳方式是什么?

EN

回答 1

Stack Overflow用户

发布于 2016-02-12 01:42:55

阿费克你不能这么做。要拆分流,您需要执行以下操作:

代码语言:javascript
复制
// main stream
Stream stream = topology.each(...)

// stream 01
Stream stream1 = stream.each(...)

// stream 02
Stream stream2 = stream.each(...)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33837705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档