Storm bolt 中跨任务的变量

variables across tasks in Storm bolt

字段分组可以将具有特定字段的元组指向同一个任务。一个执行器可以包含多个任务。

如果我声明一个带有私有变量整数的螺栓来计算元组。

public static class CountBolt implements IRichBolt {
    OutputCollector _collector;
    private int count;

    public void prepare(Map conf, TopologyContext context, OutputCollector collector) {
        _collector = collector;
        count = 0;
    }

    public void execute(Tuple tuple) {
        count = count + 1;
        _collector.ack(tuple);
    }

    public void cleanup() {
    }

    public void declareOutputFields(OutputFieldsDeclarer declarer) {
    }

    public Map getComponentConfiguration() {
        return null;
    }
}

这个计数是否显示同一任务或同一执行者的输入总数?

计数将按任务计算。每个任务都有自己的 Spout/Bolt class.

实例

如果变量被声明 static,它将是每个工人。 (不是每个执行者,因为一个工人可能 运行 同一个 Spout/Bolt 的多个执行者。)