2014-01-04 4 views
0

Я зарегистрировал собственный сериалайзер для класса в Шторма Conf/storm.yaml следующим образом:Исключение брошено при регистрации пользовательских сериализаторы в storm.yaml Шторма

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

Когда я начал штурм, набрав "бен/штормовой ореол", исключения выбрасываются:


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.yaml, а не какая-либо другая конфигурации в конфе/шторм .yaml. Я предполагаю, что могут быть ошибки формата, и Storm не смог правильно разобрать conf/storm.yaml. Но я рассмотрел строки, которые я добавил, например: 1) нет вкладки перед «- custom.Car: custom.MyCarSerializer», и вместо этого они являются пустыми; 2) появляется пробел, следующий за «- custom.Car:». Но это не может решить проблему. У кого есть аналогичная проблема и как вы ее решили?

Версия моего шторма - 0.9.0.1, и я запускаю его в удаленном режиме.

+0

Вы можете поделиться полным файлом yaml, который используете – user2720864

ответ

1

Определенно, ваш storm.yaml не является допустимым файлом YAML. Как сказал @ user2720864, ​​опубликуйте файл storm.yaml.
Между тем, подтвердите свой файл YAML, используя службу YAML Lint.

+0

+1 для валидатора – user2720864

+0

Проблема связана с тем, что «topology.kryo.register:» должно быть запущено с пустым пространством, и я нашел его проверка моего conf/storm.yaml с помощью http://yamllint.com/. Этот сайт очень полезен. Спасибо. –

+0

@ user3159573 Вы также можете выбрать ответ! ;) – Chiron

 Смежные вопросы

  • Нет связанных вопросов^_^