在storm的storm.yaml中注册自定义序列化程序时引发异常

iyr7buue  于 2021-06-24  发布在  Storm
关注(0)|答案(1)|浏览(316)

我在storm的conf/storm.yaml中为类注册了一个自定义序列化程序,方法如下:
topology.kryo.register寄存器:
      - custom.car:custom.mycarserializer
当我输入“bin/storm nimbus”启动storm时,抛出异常:

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:”后面有一个空格。但这并不能解决问题。谁有类似的问题,你是怎么解决的?
我的storm版本是0.9.0.1,我在远程模式下运行它。

x0fgdtte

x0fgdtte1#

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

相关问题