You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Storm 2.3.0传递StormCrawler爬虫YAML配置时触发空指针异常

Storm 2.3.0提交拓扑时自定义YAML配置加载失败触发空指针异常

问题场景

本地单机模式运行Storm 2.3.0,提交带自定义爬虫YAML配置的拓扑时,配置中的预期属性无法加载,触发空指针异常。提交命令如下:

storm jar stormcrawler.jar topology.BasicTopology -conf conf/crawler-conf.yaml

自定义配置文件conf/crawler-conf.yaml内容:

config:
    topology.workers: 1
    topology.es.spouts: 1

错误信息

运行时抛出空指针异常:

Exception in thread "main" java.lang.NullPointerException
        at topology.BasicTopology.run(BasicTopology.java:78)

对应BasicTopology.java代码片段:

@Override
protected int run(String[] args) {
    log.info(this.conf.keySet().toString());
    int nbWorkers = (int) this.conf.get("topology.workers");   // 触发NPE
}

根因分析

Storm 2.3.0新增的参数解析器会将单短横线的-conf识别为Storm通用配置的-c标志,错误地把"onf"当作Storm选项,最终以-Dstorm.options=onf方式运行。这导致拓扑仅收到conf/crawler-conf.yaml参数,因缺少正确的-conf前缀,YAML配置文件未被解析,this.conf中不存在topology.workers属性,触发空指针异常。该问题在Storm 1.2.2中不会出现。

解决方案

使用双短横线的--conf替代单短横线的-conf指定自定义配置文件,修正后的提交命令:

storm jar stormcrawler.jar topology.BasicTopology --conf conf/crawler-conf.yaml

或通过--分隔Storm通用参数与拓扑自定义参数,确保参数解析器正确识别:

storm jar stormcrawler.jar topology.BasicTopology -- -conf conf/crawler-conf.yaml

内容的提问来源于stack exchange,提问作者Patricio Page

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 10:25:17