天天看點

Apache Storm 官方文檔 —— 定義 Storm 的非 JVM 語言 DSL

當你建立 thrift 結構的 spouts 與 bolts 時,spout 或者 bolt 的代碼是以 componentobject 結構體的形式定義的:

對于非 jvm 語言 dsl(這裡以 python dsl 為例),你需要使用其中的 “2” 與 “3”。shellcomponent 負責指定運作該元件(例如你的 python 代碼)的腳本,而 javaobject 則負責指定該元件的本地(native)java spouts 與 bolts(而且 storm 也會使用反射來建立 spout 或者 bolt)。

“storm shell” 指令可以用于送出拓撲。下面是一個示例:

storm shell 随後會将 <code>resources/</code> 打包到一個 jar 檔案中,将該檔案上傳到 nimbus,然後像這樣調用你的 topology.py 腳本:

接着你就可以使用 thrift api 連接配接到 nimbus 來送出拓撲,并将上傳的 jar 檔案位址作為參數傳入 submittopology 方法中。作為參考,下面給出了 submittopology 的定義:

最後,對于非 jvm dsl 還有一件非常重要的事就是要確定可以在一個檔案中友善地定義出完整的拓撲(bolts,spouts,以及拓撲的其他部分定義)。