亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Storm的Grouping有哪些

發布時間:2021-12-23 14:34:32 來源:億速云 閱讀:147 作者:iii 欄目:云計算

這篇文章主要介紹“Storm的Grouping有哪些”,在日常操作中,相信很多人在Storm的Grouping有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Storm的Grouping有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

##Storm Grouping

  1. shuffleGrouping

    將流分組定義為混排。這種混排分組意味著來自Spout的輸入將混排,或隨機分發給此Bolt中的任務。shuffle grouping對各個task的tuple分配的比較均勻。

  2. fieldsGrouping

    這種grouping機制保證相同field值的tuple會去同一個task,這對于WordCount來說非常關鍵,如果同一個單詞不去同一個task,那么統計出來的單詞次數就不對了。

  3. All grouping

    廣播發送, 對于每一個tuple將會復制到每一個bolt中處理。

  4. Global grouping

    Stream中的所有的tuple都會發送給同一個bolt任務處理,所有的tuple將會發送給擁有最小task_id的bolt任務處理。

  5. None grouping

    不關注并行處理負載均衡策略時使用該方式,目前等同于shuffle grouping,另外storm將會把bolt任務和他的上游提供數據的任務安排在同一個線程下。

  6. Direct grouping

    由tuple的發射單元直接決定tuple將發射給那個bolt,一般情況下是由接收tuple的bolt決定接收哪個bolt發射的Tuple。這是一種比較特別的分組方法,用這種分組意味著消息的發送者指定由消息接收者的哪個task處理這個消息。 只有被聲明為Direct Stream的消息流可以聲明這種分組方法。而且這種消息tuple必須使用emitDirect方法來發射。消息處理者可以通過TopologyContext來獲取處理它的消息的taskid (OutputCollector.emit方法也會返回taskid)

##fieldsGrouping

如果你了解Storm,我想你能明白其中的大多數Grouping。這里的Grouping策略我想著重介紹一下fieldsGrouping,也最難理解的。

fieldsGrouping是按照數據中字段Field的值分組的。下面是我的測試代碼:

TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("words", new TestWordSpout(), 2); 
builder.setBolt("exclaim2", new DefaultStringBolt(), 5)
	    .fieldsGrouping("words", new Fields("word"));

測試的例子Spout是Storm自帶的例子,Blot代碼如下:

public void execute(Tuple tuple) {
	log.info("rev a message: " + tuple.getString(0));
	collector.emit(tuple, new Values(tuple.getString(0) + "!!!"));
    collector.ack(tuple);
}
public void declareOutputFields(OutputFieldsDeclarer declarer) {
    declarer.declare(new Fields("word"));
}

Storm自帶的例子Spout能隨機的返回<code>new String[] {"nathan", "mike", "jackson", "golda", "bertels"};</code>列表中的幾個字符串。這也是測試FieldGroup的好例子。

按照我最早做Storm開始前的理解,既然是按照Field分組,那么是所有相同的Field值得數據都會到達一個Blot的。我測試很多次,其結果并不是這樣,一個Blot會收到多個不同的值。我沒有仔細探究Storm這樣分組有什么特別的地方,以至于自己對Storm的學習停滯了很長時間。

Storm能保證所有相同Field值的數據到達的是相同的Blot,但是不保證一個Blot只處理一個值域。

也就是說,所有值是nathan能到達到一個Blot,但是到達同一個Blot的值可能有多個,如"nathan", "mike"的數據都到達。

理解到這點上,fieldsGrouping就算是理解了。

下面是測試日志:

9144 [Thread-35-exclaim2] INFO  cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: bertels
9234 [Thread-35-exclaim2] INFO  cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: mike
9245 [Thread-33-exclaim2] INFO  cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: nathan
9335 [Thread-26-exclaim2] INFO  cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: golda
9346 [Thread-26-exclaim2] INFO  cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: golda
9437 [Thread-35-exclaim2] INFO  cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: jackson
9447 [Thread-35-exclaim2] INFO  cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: mike
9537 [Thread-26-exclaim2] INFO  cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: golda
9548 [Thread-35-exclaim2] INFO  cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: jackson
9639 [Thread-33-exclaim2] INFO  cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: nathan
9649 [Thread-35-exclaim2] INFO  cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: jackson
9740 [Thread-33-exclaim2] INFO  cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: nathan
9749 [Thread-35-exclaim2] INFO  cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: jackson
9841 [Thread-35-exclaim2] INFO  cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: bertels
9850 [Thread-26-exclaim2] INFO  cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: golda

由上面的日志可以看出,golda這個值的數據,的確歸并到一個Blot處理的。線程編號:Thread-26-exclaim2。 其它值也都是相同值都是在一個線程內被處理的。

到此,關于“Storm的Grouping有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新郑市| 通榆县| 金昌市| 邮箱| 开阳县| 临清市| 浦城县| 万源市| 元谋县| 泰州市| 横山县| 白山市| 渑池县| 兰溪市| 中山市| 桦川县| 安远县| 四川省| 佛山市| 北辰区| 永兴县| 龙陵县| 黄龙县| 重庆市| 泸西县| 嘉兴市| 苍溪县| 杭锦后旗| 锡林浩特市| 长兴县| 玛沁县| 威远县| 当涂县| 长白| 青州市| 湾仔区| 武鸣县| 搜索| 临泉县| 察雅县| 广河县|