2013-07-24 86 views
2

其存儲到另一個數據庫中我想通過一個噴口得到一個數據庫中的數據和處理數據,並使用trident.I是新來的風暴,三叉戟其存儲在另一個數據庫而我不知道如何實現它。我的嘴(實現IRichSpout單獨的Java類,這是由三叉戟支持)得到了數據庫中的數據,我發出它作爲object.I需要將它傳遞給三叉戟拓撲進行處理(記錄記錄數)並將其存儲到數據庫中。獲取數據,並使用三叉戟拓撲

TridentTopology topology = new TridentTopology(); 
TridentState wordCounts = 
      topology.newStream("spout1",spout) 

現在新的流取噴口作爲輸入即語法是

Stream storm.trident.TridentTopology.newStream(String txId, IRichSpout spout) 

,但我想給用於三叉戟處理由噴口作爲輸入到流發射的對象並保存到database.So我怎樣才能把我的嘴類內部的三叉戟,並把它傳遞給新的流或者我應該既包括壺嘴和三叉戟爲同一類?

可以有人幫忙PLZ .....

回答

1

你可以做這樣的事情

MyFooSpout spout = new MyFooSpout(); 
    topology.newStream("spout1", spout).... 

MyFooSpout類應該實現IRichSpout

trident tutorialnewStream方法TridentTopology從任何輸入源讀取拓撲結構創建一個數據流。

在您的情況下,它可能是MyFooSpout

.I在一個噴口(它實現IRichSpout單獨的Java類,其是由三叉戟支持)得到了來自數據庫中的數據,我發射它作爲一個反對

可以請你澄清究竟是什麼你指的是什麼?你的噴口代碼是怎樣的?作爲一個非常普通的例子,如果我們寫類似(從教程頁面獲取)

TridentState wordCounts = topology.newStream("spout1", spout).each(new Fields("sentence"), new Split(), new Fields("word")) 

這意味着spout應該發出一個字段即sentence。通過調用eachSplit功能將被施加到所述流中的每一個元組,這將執行基於任何代碼通過取sentence字段寫上。但是,這可能會根據您的要求而有所不同e.g它可能是一個FilterMyFilter extends BaseFilter還是一個functionMyCustomFuction extends BaseFunction。查看API頁面瞭解更多詳情。