storm NotSerializableException: java.io.BufferedWriter解決

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章