storm版本-1.0.6。
我为我的一个类注册了一个自定义序列化程序。正如预期的那样,它的write方法被调用并成功运行。然而,我的自定义序列化程序的read方法根本不会被调用,尽管execute在下游被调用。我在本地集群中测试这个,并将always try to serialize设置为true。
我的猜测是,出于某种原因,storm对我的自定义序列化不满意,并且在没有序列化的情况下将元组按原样传递给下游。我在下游螺栓中看到的字段的指针值与发出的值相同。
我没有看到任何警告或错误。我怎么知道在这种情况下出了什么问题?我知道我可以得到源代码并进行调试,但是有人认为其他的提示会有帮助吗?
1条答案
按热度按时间4uqofj5v1#
我相信本地模式集群只测试序列化,而不是反序列化。当所有worker都在一个进程中运行时,没有理由序列化和反序列化元组,因为它们不会通过网络传输。always try serialize设置只是让storm serialize元组测试序列化是否有效,但是元组不会在本地集群中以序列化形式传输。
请参阅序列化检查,其中调用了检查,并且在非本地集群中发生了反序列化。