在Storm中使用Tuple.getStringByField(“ABC”)有什么用

时间:2015-03-07 14:27:01

标签: apache-storm

我无法理解在Apache Storm中使用Tuple.getStringByField(“ABC”)。

以下是代码:

   Public Void execute(Tuple input){ 
       try{
          if (input.getSourceStreamId.equals("signals"))
            {
                str=input.getStringByField("action")

                if ("refresh".equals(str))
                  {....}
             }
             }...

这里的 input.getStringByField(“action”)正是这样做的。

谢谢。

2 个答案:

答案 0 :(得分:3)

在风暴中,喷口和螺栓都会发出元组。但问题是每个元组中包含的内容。每个spout和bolt都可以使用以下方法来定义元组模式。

  @Override
  public void declareOutputFields(
      OutputFieldsDeclarer outputFieldsDeclarer)
  {
    // tell storm the schema of the output tuple
    // tuple consists of columns called 'mycolumn1' and 'mycolumn2'
    outputFieldsDeclarer.declare(new Fields("mycolumn1", "mycolumn2"));
  }

随后的螺栓可以使用getStringByField("mycolumn1")根据列名检索值。

答案 1 :(得分:1)

getStringByField()getString()类似,不同之处在于它按字段名称而不是位置查找字段。