2013-05-02 38 views
1

我們有一個專爲處理社交媒體內容而設計的系統。在我們的風暴拓撲結構中,我們有一些要處理的螺栓,如情感分析,語言檢測,垃圾郵件檢測等。在風暴中準備的所有教程和示例中,我們已經看到一個bolt可以發出在declareOutputFields()方法中聲明的元組字段。有沒有任何選項可以用輸入元組發佈當前的螺栓字段?風暴增量處理和濃縮

例如,我有一個包含下面的字段的輸入元組:

<

文本:血乳酸血乳酸

用戶名:保

日期:2013年1月1日

來源:twitter

>

我要定義的輸出元組爲:

<

文本:血乳酸血乳酸

用戶名:保

日期:2013年1月1日

源:推特

郎鹹平:TR

>

請注意,我想我的螺栓不需要了解任何事情之前螺栓的輸出元組架構。

謝謝。

回答

0

你可以通過編寫一個函數返回一個給定輸入的螺栓而不是直接寫出螺栓來達到這樣的效果。可以通過編寫一個函數來參數化螺栓的創建,該函數將返回一個帶有所需輸出字段的螺栓對象。

很顯然,這將在您部署拓撲時完成,因此它在運行時不能在流上動態顯示,但在啓動時它可以是動態的。類似於

(defn make-bolt [bolt-name input-fields] 
    (defbolt bolt-name input-fields 
    ...)) 

.... 

(topology 
{} ;; spouts 
{"a-bolt" (bolt-spec {"a-spout":shuffle} 
         (make-bolt bolt-name ["input" "tuple" "lang"])))) 
+0

對等延遲。對我來說最好的解決方案是定義新的數據類型,其中包括所有字段並傳遞它的拓撲結構 – user363610 2013-08-23 08:03:07