【问题标题】:How to dispatch tuple to different blot in storm如何在风暴中将元组发送到不同的印迹
【发布时间】:2015-05-07 09:46:42
【问题描述】:

everyone.I want to do the job——一个spout向blotA发出数字,BlotA向Blot_odd发出奇数,BlotA向Blot_even发出偶数。 我选择了一种方式使用emit(streamId,tuple),但不知道在哪里定义我的streamId?

在 Blot_odd / Blot_even 中,

declareOutputFields(){declarer.declareStream("streamId", new Fields("fieldName"));}

mainMyTopology.java

main() {
    TopologyBuilder builder = new TopologyBuilder();
    builder.setSpout("num", new NumSpout(), 10);
    builder.setBolt("judge", new Bolt(), 3).shuffleGrouping("num");
    builder.setBolt("odd", new Bolt_odd(), 2).shuffleGrouping("judge");
    builder.setBolt("even", new Bolt_even(), 2).shuffleGrouping("judge");
}

但我失败了。

【问题讨论】:

标签: stream grouping apache-storm


【解决方案1】:

你可以像下面那样做。

在 Bolt 的 declareOutputFields 方法中,这样填写细节。

declarer.declareStream("oddstream", new Fields("fieldName"));
declarer.declareStream("evenstream", new Fields("fieldName"));

你可以像下面这样声明拓扑。

builder.setSpout("num", new NumSpout(), 10);
builder.setBolt("judge", new Bolt(), 3).shuffleGrouping("num");
builder.setBolt("odd", new Bolt_odd(), 2).shuffleGrouping("judge", "oddstream");
builder.setBolt("even", new Bolt_even(), 2).shuffleGrouping("judge", "evenstream");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-10
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多