重新平衡拓扑抛出java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1

时间:2014-02-04 09:42:23

标签: twitter apache-storm

我正在使用文章

指出的Taylor Goetz的风暴版本

http://ptgoetz.github.io/blog/2013/12/18/running-apache-storm-on-windows/

位于: https://github.com/ptgoetz/incubator-storm/tree/windows-test

我已成功在计算机上安装所有内容(运行Windows 7,64位)。我也运行良好的指示拓扑和我的拓扑。但是,当我尝试通过使用命令重新配置喷口或螺栓的数量来重新平衡我的拓扑时

storm rebalance WordCount -e spout=3  

我得到了例外:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out   of range: -1
at java.lang.String.substring(String.java:1911)
at backtype.storm.command.rebalance$parse_executor.invoke(rebalance.clj:24)
at clojure.tools.cli$apply_specs.invoke(cli.clj:80)
at clojure.tools.cli$cli.doInvoke(cli.clj:130)
at clojure.lang.RestFn.invoke(RestFn.java:460)
at backtype.storm.command.rebalance$_main.doInvoke(rebalance.clj:31)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at backtype.storm.command.rebalance.main(Unknown Source)

如果我只改变其工作的工人数量,没有任何例外。

如果有人测试过这个版本,你可以帮我摆脱它吗? 我期待着你的回答。

1 个答案:

答案 0 :(得分:0)

在上述Windows版本中,不应按照

中的说明传递rebalance命令参数

https://github.com/nathanmarz/storm/wiki/Understanding-the-parallelism-of-a-Storm-topology

storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10

为了摆脱上面提到的异常(java.lang.StringIndexOutOfBoundsException :)你应该使用命令

 storm rebalance WordCount -e "spout=3"

但是,尝试重新平衡更多组件(喷口或螺栓)将仅重新平衡列表中提到的最新组件。因此,例如:

storm rebalance WordCount -e "spout=3" -e "count=5"

重新平衡仅适用于“计数”组件,而不适用于“鲸鱼喷水”。

因此,在我看来,应该更新文档或者应该更改rebalance.clj以支持多个组件的重新平衡。 但这是一个不同的问题。