Question

I registered a custom serializer for a class in Storm's conf/storm.yaml in the following way:

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

When I started storm by typing "bin/storm nimbus", exceptions are thrown:


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)

Without these registrations that I added Storm can run normally, so I'm sure the exceptions are thrown because of the registrations I added in conf/storm.yaml, not any other configuration in conf/storm.yaml. I guess there may be some format errors and Storm could not parse conf/storm.yaml correctly. But I have examined the lines I added, for example, 1) there is no tab before "- custom.Car: custom.MyCarSerializer" and instead they are blank spaces; 2) there is a blank space following "- custom.Car:". But this can not solve the problem. Who has a similar problem and how did you solve it?

My storm's version is 0.9.0.1, and I run it in remote mode.

Was it helpful?

Solution

Definitely, your storm.yaml isn't a valid YAML file. As @user2720864 said, post your storm.yaml file.
Meanwhile, validate your YAML file using YAML Lint service.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top