1
運行我的拓撲時,特別是在螺栓中,我得到NullPointerException
s中的backtype.storm.utils.DisruptorQueue.consumeBatchToCursor
方法。噴嘴正式執行。運行拓撲時在Storm中發生NullPointerException
Storm的故障排除page表示這可能是由於OutputCollector上有多個線程發出方法。但是,我不明白它與我的案件有什麼關係。
下面是壺嘴代碼:
(defspout stub-spout ["stub-spout"]
[conf context collector]
(spout
(nextTuple []
(let [channel-value (<!! storm-async-channel)]
(emit-spout! collector [channel-value])))
(ack [id]
))))
和螺栓:
(defbolt stub-bolt ["stub-bolt"] [tuple collector]
(println "Invocation!")
(let [obj (get tuple "object")
do-some-calculations (resolve 'calclib/do-some-calculations)
new-obj (do-some-calculations obj)]
(emit-bolt! collector new-obj)))
經過一番調查事實證明,調用resolve
返回null(我在運行時需要resolve
因爲一些計算髮生在位於calclib
的宏中)。
雖然代碼在本地羣集中正常運行。這是爲什麼發生?
將不勝感激的任何建議。 謝謝!