将两个螺栓的输出发送到Storm中的单个螺栓?

用户1579557

将BoltA和BoltB的输出发送到BoltC的最简单方法是什么。我必须使用Joins还是有更简单的解决方案?A和B具有相同的字段(ts,metric_name,metric_count)。

    // KafkaSpout --> LogDecoder
    builder.setBolt(LOGDECODER_BOLT_ID, logdecoderBolt, 10).shuffleGrouping(KAFKA_SPOUT_ID);

    // LogDecoder --> CountBolt
    builder.setBolt(COUNT_BOLT_ID, countBolt, 10).shuffleGrouping(LOGDECODER_BOLT_ID);

    // LogDecoder --> HttpResCodeCountBolt
    builder.setBolt(HTTP_RES_CODE_COUNT_BOLT_ID, http_res_code_count_bolt, 10).shuffleGrouping(LOGDECODER_BOLT_ID);


    # And now I want to send CountBolt and HttpResCodeCountBolt output to Aggregator Bolt.

    // CountBolt --> AggregatwBolt
    builder.setBolt(AGGREGATE_BOLT_ID, aggregateBolt, 5).fieldsGrouping((COUNT_BOLT_ID), new Fields("ts"));

    // HttpResCodeCountBolt --> AggregatwBolt
    builder.setBolt(AGGREGATE_BOLT_ID, aggregateBolt, 5).fieldsGrouping((HTTP_RES_CODE_COUNT_BOLT_ID), new Fields("ts"));

这可能吗 ?

克里斯·格肯

是。只需在fieldsGrouping调用中添加一个流ID(以下为“ stream1”和“ stream2”):

BoltDeclarer bd = builder.setBolt(AGGREGATE_BOLT_ID, aggregateBolt, 5); 
bd.fieldsGrouping((COUNT_BOLT_ID), "stream1",  new Fields("ts"));
bd.fieldsGrouping((HTTP_RES_CODE_COUNT_BOLT_ID), "stream2", new Fields("ts"));

然后在BoltC的execute()方法中,可以测试以查看元组来自哪个流:

public void execute(Tuple tuple) {

    if ("stream1".equals(tuple.getSourceStreamId())) {
        // this came from stream1
    } else if ("stream2".equals(tuple.getSourceStreamId())) {
        // this came from stream2
    }

由于您知道元组来自哪个流,因此在两个流上不必具有相同形状的元组。您只需根据流ID解组元组即可。

您还可以检查元组来自哪个组件(在我键入此内容时,我认为这可能更适合您的情况)以及发出元组的组件实例(任务)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将两个不同的Spout的输出发送到同一Bolt?

来自分类Dev

如何使用wget访问两个网站,但将第一个网站的输出发送到`/ dev / null`?

来自分类Dev

如何将消息发送到 SCDF 中的两个不同输出通道?

来自分类Dev

如何将多个命令的输出发送到单个 shell 管道?

来自分类Dev

如何将两个文件发送到具有不同MsgSeqNumber的单个MQ消息中

来自分类Dev

jQuery单个提交将两个请求发送到相同的URL

来自分类Dev

如何将标准输出和标准错误发送到两个文件

来自分类Dev

hadoop方法将输出发送到多个目录

来自分类Dev

将unix输出发送到csv文件

来自分类Dev

如何将输出发送到stderr?

来自分类Dev

bash exec将输出发送到管道,如何?

来自分类Dev

将OpenCV输出发送到VLC流

来自分类Dev

将渲染的组件输出发送到后端

来自分类Dev

将make run的输出发送到文件

来自分类Dev

无法将psadmin输出发送到日志

来自分类Dev

如何将python中的Logger对象的输出发送到文件?

来自分类Dev

将打印输出发送到python中的新文件?

来自分类Dev

如何将tFileList输出发送到Talend中的文件?

来自分类Dev

VIM 中的一些 bash 命令将输出发送到 bash 而不是 VIM

来自分类Dev

如何将转换的输出发送到 bash 中的可写目录?

来自分类Dev

无论如何将量角器的输出发送到文件中?

来自分类Dev

仅用一个按钮将两个表格发送到烧瓶中

来自分类Dev

我可以在将命令输出发送到文件(一个划线员)之前处理命令输出吗?

来自分类Dev

如何将两个querystring属性发送到jQuery load()中的URL

来自分类Dev

如何一次将数据发送到两个属性中?

来自分类Dev

Twisted spawnProcess,将一个过程的输出发送到另一个过程的输入

来自分类Dev

从Storm螺栓将行插入HBase

来自分类Dev

从vim运行build命令,将输出发送到另一个tmux窗格?

来自分类Dev

试图将 Tomcat 的 sigquit 输出发送到一个单独的文件 - 文件创建但为空?

Related 相关文章

  1. 1

    如何将两个不同的Spout的输出发送到同一Bolt?

  2. 2

    如何使用wget访问两个网站,但将第一个网站的输出发送到`/ dev / null`?

  3. 3

    如何将消息发送到 SCDF 中的两个不同输出通道?

  4. 4

    如何将多个命令的输出发送到单个 shell 管道?

  5. 5

    如何将两个文件发送到具有不同MsgSeqNumber的单个MQ消息中

  6. 6

    jQuery单个提交将两个请求发送到相同的URL

  7. 7

    如何将标准输出和标准错误发送到两个文件

  8. 8

    hadoop方法将输出发送到多个目录

  9. 9

    将unix输出发送到csv文件

  10. 10

    如何将输出发送到stderr?

  11. 11

    bash exec将输出发送到管道,如何?

  12. 12

    将OpenCV输出发送到VLC流

  13. 13

    将渲染的组件输出发送到后端

  14. 14

    将make run的输出发送到文件

  15. 15

    无法将psadmin输出发送到日志

  16. 16

    如何将python中的Logger对象的输出发送到文件?

  17. 17

    将打印输出发送到python中的新文件?

  18. 18

    如何将tFileList输出发送到Talend中的文件?

  19. 19

    VIM 中的一些 bash 命令将输出发送到 bash 而不是 VIM

  20. 20

    如何将转换的输出发送到 bash 中的可写目录?

  21. 21

    无论如何将量角器的输出发送到文件中?

  22. 22

    仅用一个按钮将两个表格发送到烧瓶中

  23. 23

    我可以在将命令输出发送到文件(一个划线员)之前处理命令输出吗?

  24. 24

    如何将两个querystring属性发送到jQuery load()中的URL

  25. 25

    如何一次将数据发送到两个属性中?

  26. 26

    Twisted spawnProcess,将一个过程的输出发送到另一个过程的输入

  27. 27

    从Storm螺栓将行插入HBase

  28. 28

    从vim运行build命令,将输出发送到另一个tmux窗格?

  29. 29

    试图将 Tomcat 的 sigquit 输出发送到一个单独的文件 - 文件创建但为空?

热门标签

归档