云計(jì)算
今天就跟大家聊聊有關(guān)Storm 中Fields有什么用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
西崗網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,西崗網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為西崗1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的西崗做網(wǎng)站的公司定做!TransactionalTopologyBuilderbuilder=newTransactionalTopologyBuilder("test","spout",newTweetsTransactionalSpout());builder.setBolt("users-splitter",newUserSplitterBolt(),4).shuffleGrouping("spout");builder.setBolt("hashtag-splitter",newHashtagSplitterBolt(),4).shuffleGrouping("spout");builder.setBolt("user-hashtag-merger",newUserHashtagJoinBolt(),4).fieldsGrouping("users-splitter","users",newFields("tweet_id")).fieldsGrouping("hashtag-splitter","hashtags",newFields("tweet_id"));這里有兩個(gè)bolt在向user-hashtag-merger發(fā)送數(shù)據(jù),兩個(gè)bolt在 emit的時(shí)候可能發(fā)送了不同的tuple比如:
users-splitter中emit(new Values(a, b, c)); declarer.declare(new Fields("id", "name", "tweet_id"));
hashtag-splitter中則emit(new Values(a, b)); declarer.declare(new Fields("id", "tweet_id"));
比如user-hashtag-merger中需要的是users-splitter中的c,hashtag-splitter 中的b,而在user-hashtag-merger
中接收數(shù)據(jù)的時(shí)候無法知道數(shù)據(jù)是哪個(gè)bolt發(fā)來的(或者就算知道,發(fā)來的數(shù)據(jù)格式不一樣也不是一個(gè)好的設(shè)計(jì))所以這邊設(shè)定了一個(gè)
Fields,這樣在發(fā)送數(shù)據(jù)的時(shí)候只發(fā)送指定Fields的數(shù)據(jù),比如這邊user-hashtag-merger不管前面bolt emit的時(shí)候
發(fā)送了什么,最后收到的只有一個(gè),方便處理。
builder.setBolt("redis-committer",newRedisCommiterCommiterBolt()).globalGrouping("users-splitter","users").globalGrouping("hashtag-splitter","hashtags").globalGrouping("user-hashtag-merger");看完上述內(nèi)容,你們對(duì)Storm 中Fields有什么用有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注資訊頻道,感謝大家的支持。