org.apache.storm.zookeeper.server.NIOServerCnxnFactory - Thread Thread[main,5,main] died
java.lang.RuntimeException: java.io.NotSerializableException: java.io.BufferedWriter
at backtype.storm.serialization.DefaultSerializationDelegate.serialize(DefaultSerializationDelegate.java:43) ~[storm-core-0.9.3.jar:0.9.3]
at backtype.storm.utils.Utils.serialize(Utils.java:85) ~[storm-core-0.9.3.jar:0.9.3]
at
storm NotSerializableException統一解決方法:
不能在構造方法中初始化OutputStreamWriter(類似的對象),因爲storm先初始化supervisor中的bolt對象,然後發送給worker,在調用prepare()方法
解決的辦法就是,從supervisor發送到bolt這一步並不是初始化OutputStreamWriter類,可以先聲明相關的對象,然後等發送到worker了以後,在bolt的prepare()裏進行實例化,就可以避免此問題。下面是google來的一段話:
Thesupervisor instantiates the bolts, sends them to the workers, and then callsprepare() on all of them. Therefore, anything that isn't serializable that isinstantiated before prepare() causes this process to fail