日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Storm之Bolt-接口

發布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Storm之Bolt-接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.



IBolt: ?

? ? ? ? bolt接口類,定義了常用的幾個接口,IBolt的實現類在client上被創建,然后序列化到拓撲里并被提交到集群的master上,之后nimbus會啟動worker進行反序列化,調用prepare進行準備完畢之后就開始處理tuples

? ? ? ? 如果是在java里定義bolts ,建議實現IRichBolt.java接口類,IRichBolt.java同時繼承了IComponent.java接口,提供了更多對拓撲進行操作的方法。

/*** 當集群中的worker初始化一個跟當前Bolt相關的task時候被調用,此方法提供和準備bolt執行時的環境.* @param stormConf 此bolt使用的storm配置,合并了本機和集群的配置,將會提供給topology* @param context task的上下文,可以獲取taskId,componentId,input,output等* @param collector 用于任意時刻提交bolt里的tuples,collector是線程安全的,應當保存在Bolt里.*/ void prepare(Map stormConf, TopologyContext context, OutputCollector collector); /*** 處理單個輸入的tuple* 這里面使用OutputCollector來提交tuples.* 官方建議所有的輸入tuples在處理完之后進行ack或者fail,否則storm無法判斷該tuples是否被處理完畢* 一般使用IBasicBolt,在execute方法中額外提供了outputCollector,會更加方便處理* @param input*/ void execute(Tuple input); /*** Bolt關閉的時候被調用,由于是被supervisor使用kill 9干掉的,所以并不保證cleanup會被執行*/ void cleanup();

IComponent.java


組件接口,所有的bolt和spout都可以視作組件 /*** 申明了當前組件的輸出模式* @param declarer 申明輸出streamId,輸出的field,判斷一個output stream是否是direct stream*/ void declareOutputFields(OutputFieldsDeclarer declarer); /***獲取組件配置.* @return*/ Map<String, Object> getComponentConfiguration();


IRichBolt.java


跟IBolt接口相似,只是多繼承了IComponent,多了申明輸出和獲取配置兩個接口 IBasicBolt.java /*** 跟IBolt.java中作用類似,只是少了OutPutCollector*/ void prepare(Map stormConf, TopologyContext context); /*** 跟Ibolt.java中作用類似,多了OutPutCollector*/ void execute(Tuple input, BasicOutputCollector collector);void cleanup();



總結

以上是生活随笔為你收集整理的Storm之Bolt-接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。