Пользовательский десериализатор не называется Apache Storm
Штурмовая версия - 1.0.6.
У меня есть специальный сериализатор, зарегистрированный для одного из моих классов. Как и ожидалось, вызывается метод write, который выполняется успешно. Однако метод read моего пользовательского сериализатора не вызывается вообще, хотя execute вызывается в нижележащих болтах. Я тестирую это в локальном кластере, всегда пытаясь сериализовать значение true.
Я предполагаю, что шторм по какой-то причине не устраивает мою пользовательскую сериализацию и передает кортеж в исходное состояние без сериализации. Значение указателя поля, которое я вижу в нижнем болте, совпадает с тем, которое было испущено.
Я не вижу никаких предупреждений или ошибок. Как я могу узнать, что идет не так в этой ситуации? Я знаю, что могу получить исходный код и отладить, но есть ли еще какие-нибудь советы, которые будут полезны?
1 ответ
Я считаю, что кластеры локального режима только тестируют сериализацию, а не десериализацию. Когда все работники работают в одном процессе, нет причин сериализовать и десериализовать кортежи, потому что они не передаются по сети. Параметр всегда пытаться сериализовать просто заставляет Storm сериализовать кортежи в любом случае, чтобы проверить, работает ли сериализация, но они не передаются в сериализованной форме в локальном кластере.
Посмотрите проверку сериализации, где эта проверка вызывается и где десериализация происходит в нелокальном кластере.