我正在尝试运行具有Windowed Bolt的拓扑,但是遇到以下异常:
Exception in thread "main" java.lang.NullPointerException
at org.apache.storm.topology.WindowedBoltExecutor.declareOutputFields(WindowedBoltExecutor.java:309)
at org.apache.storm.topology.TopologyBuilder.getComponentCommon(TopologyBuilder.java:432)
at org.apache.storm.topology.TopologyBuilder.createTopology(TopologyBuilder.java:120)
at Main.main(Main.java:23)
我通过扩展BaseWindowedBolt创建了自定义窗口螺栓。
拓扑代码:
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("integer", new RandomIntegerSpout(), 1);
builder.setBolt("tumblingsum", new CustomTumblingSumWindow().withTumblingWindow(new Duration(10, TimeUnit.SECONDS)),1).shuffleGrouping("integer");
builder.setBolt("final", new ResultBolt(),1).shuffleGrouping("tumblingsum");
Config config = new Config();
config.put(Config.TOPOLOGY_WORKERS, 1);
StormSubmitter.submitTopology("Test-Windowing-Topology", config, builder.createTopology());
风暴版本是1.2.2
如果我在没有WindowedBolt的情况下运行拓扑,那么它正在运行。
我错过了什么吗?
谢谢
我的猜测是你的螺栓从getComponentConfiguration
返回null。这看起来像一个bug,但你可以通过从getComponentConfiguration
返回一个空地图来解决它。