Пользовательский десериализатор не называется Apache Storm

Штурмовая версия - 1.0.6.

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

Я предполагаю, что шторм по какой-то причине не устраивает мою пользовательскую сериализацию и передает кортеж в исходное состояние без сериализации. Значение указателя поля, которое я вижу в нижнем болте, совпадает с тем, которое было испущено.

Я не вижу никаких предупреждений или ошибок. Как я могу узнать, что идет не так в этой ситуации? Я знаю, что могу получить исходный код и отладить, но есть ли еще какие-нибудь советы, которые будут полезны?

1 ответ

Я считаю, что кластеры локального режима только тестируют сериализацию, а не десериализацию. Когда все работники работают в одном процессе, нет причин сериализовать и десериализовать кортежи, потому что они не передаются по сети. Параметр всегда пытаться сериализовать просто заставляет Storm сериализовать кортежи в любом случае, чтобы проверить, работает ли сериализация, но они не передаются в сериализованной форме в локальном кластере.

Посмотрите проверку сериализации, где эта проверка вызывается и где десериализация происходит в нелокальном кластере.

Другие вопросы по тегам