在Storm的storm.yaml中注册自定义序列化程序时抛出异常

时间:2014-01-04 06:33:46

标签: serialization configuration yaml apache-storm kryo

我通过以下方式为Storm的conf / storm.yaml中的类注册了一个自定义序列化程序:

topology.kryo.register:
- custom.Car:custom.MyCarSerializer

当我通过输入“bin / storm nimbus”开始风暴时,会抛出异常:


Exception in thread "main" expected '<document start>', but found BlockMappingStart
 in 'reader', line 27, column 1:
    topology.kryo.register:
    ^
    at org.yaml.snakeyaml.parser.ParserImpl$ParseDocumentStart.produce(ParserImpl.java:225)
    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158)
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:143)
    at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:108)
    at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:120)
    at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:481)
    at org.yaml.snakeyaml.Yaml.load(Yaml.java:424)
    at backtype.storm.utils.Utils.findAndReadConfigFile(Utils.java:121)
    at backtype.storm.utils.Utils.readStormConfig(Utils.java:161)
    at backtype.storm.config$read_storm_config.invoke(config.clj:101)
    at backtype.storm.command.config_value$_main.invoke(config_value.clj:7)
    at clojure.lang.AFn.applyToHelper(AFn.java:161)
    at clojure.lang.AFn.applyTo(AFn.java:151)
    at backtype.storm.command.config_value.main(Unknown Source)
Exception in thread "main" expected '<document start>', but found BlockMappingStart
 in 'reader', line 27, column 1:
    topology.kryo.register:
    ^
    at org.yaml.snakeyaml.parser.ParserImpl$ParseDocumentStart.produce(ParserImpl.java:225)
    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158)
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:143)
    at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:108)
    at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:120)
    at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:481)
    at org.yaml.snakeyaml.Yaml.load(Yaml.java:424)
    at backtype.storm.utils.Utils.findAndReadConfigFile(Utils.java:121)
    at backtype.storm.utils.Utils.readStormConfig(Utils.java:161)
    at backtype.storm.config$read_storm_config.invoke(config.clj:101)
    at backtype.storm.command.config_value$_main.invoke(config_value.clj:7)
    at clojure.lang.AFn.applyToHelper(AFn.java:161)
    at clojure.lang.AFn.applyTo(AFn.java:151)
    at backtype.storm.command.config_value.main(Unknown Source)

如果没有我添加的这些注册,Storm可以正常运行,所以我确定由于我在conf / storm.yaml中添加的注册而不是conf / storm.yaml中的任何其他配置而引发异常。我猜可能有一些格式错误,Storm无法正确解析conf / storm.yaml。但是我已经检查了我添加的行,例如,1)“ - custom.Car:custom.MyCarSerializer”之前没有标签,而是它们是空格; 2)“ - custom.Car:”后面有一个空格。但这无法解决问题。谁有类似的问题,你是如何解决的?

我的风暴版本是0.9.0.1,我以远程模式运行。

1 个答案:

答案 0 :(得分:1)

当然,您的storm.yaml不是有效的YAML文件。正如@ user2720864所说,发布你的storm.yaml文件 同时,使用YAML Lint服务验证您的YAML文件。